diff --git a/modules/_transition.js b/modules/_transition.js new file mode 100644 index 000000000..f9c8fa30f --- /dev/null +++ b/modules/_transition.js @@ -0,0 +1,33 @@ +export function getTogglingfunction() { + if (arguments.length == 0) { + function inner(input) { + return !input; + } + return inner; + } else if (arguments.length != 1) { + var args = arguments; + function inner(input){ + let all_arguments = Array.from(args); + all_arguments_length = all_arguments.length; + index = all_arguments.indexOf(input); + return all_arguments[(index + 1) % all_arguments_length]; + } + return inner + } else if (arguments[0] instanceof Array){ + args = arguments[0]; + function inner(input){ + let all_arguments = args; + all_arguments_length = all_arguments.length; + index = all_arguments.indexOf(input); + return all_arguments[(index + 1) % all_arguments_length]; + } + return inner + } else { + obj = arguments[0]; + function inner(input) { + inner_obj = obj; + return inner_obj[input]; + } + return inner + } +} \ No newline at end of file diff --git a/modules/findkeys.js b/modules/findkeys.js new file mode 100644 index 000000000..b87169f92 --- /dev/null +++ b/modules/findkeys.js @@ -0,0 +1,16 @@ +import cb from './_cb.js'; +import keys from './keys.js'; + + +export default function findKeys(obj, predicate, context) { + predicate = cb(predicate, context); + var _keys = keys(obj), key; + var arr = []; + for (var i = 0, length = _keys.length; i < length; i++) { + key = _keys[i]; + if (predicate(obj[key], key, obj)) { + arr.push(key); + } + } + return arr; +} \ No newline at end of file diff --git a/modules/index.js b/modules/index.js index c48ca7e9e..1fef93592 100644 --- a/modules/index.js +++ b/modules/index.js @@ -87,6 +87,7 @@ export { default as result } from './result.js'; export { default as uniqueId } from './uniqueId.js'; export { default as chain } from './chain.js'; export { default as iteratee } from './iteratee.js'; +export { default as findKeys } from './findkeys.js'; // Function (ahem) Functions // ------------------------- diff --git a/test/utility.js b/test/utility.js index b0cd4941c..1c40a04c0 100644 --- a/test/utility.js +++ b/test/utility.js @@ -465,4 +465,12 @@ assert.strictEqual(template(), '<<\nx\n>>'); }); + QUnit.test('findkeys - extended findkey function.', function(assert) { + input = {'a':2, 'b':2} + var key = _.findKey(info, function (value) { + return value === 2; + }); + assert.strictEqual(_.findKeys(input, ['a', 'b'])) + }); + }());