findKey()-重新创建lodash库方法

时间:2018-11-03 17:49:18

标签: javascript

我的CodeCademy任务有问题。我要重新创建findKey lodash库方法。这里有一些操作步骤,但是我陷入了困境,尤其是在第5点。

  1. 向我们的_对象添加一个名为findKey的方法。
  2. 为此方法添加两个参数:objectpredicate。我们会 将我们的predicate函数参数命名为predicate,因为这是 Lodash文档中使用的名称。
  3. 在该方法中,使用for ... in循环遍历每个键 在object中。
  4. 在循环中,创建一个名为value的变量并将其设置为等于 object中当前键的值。
  5. 仍然在循环中,创建另一个名为 predicateReturnValue并将其设置为等于调用结果 predicatevalue
  6. 最后,仍然在循环中,使用if语句检查 如果predicateReturnValue是真实的。如果是,则返回当前密钥 通过该方法。
  7. 在循环之外,返回undefined来解决所有不存在的情况 真实值是从predicate返回的。

这是我的无效代码:

findKey(object, predicate) {
  for (let key in object) {
    let value = object[key];
    let predicateReturnValue = predicate(value);
    if (predicateReturnValue === 'true') {
      return value;
    };
  };
  return undefined;
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您需要对predicate的呼叫进行真实检查后返回密钥。

function findKey(object, predicate) {
    for (let key in object) {
        let value = object[key];
        let predicateReturnValue = predicate(value); 
        if (predicateReturnValue) {                   // just take the value
            return key;                               // return key
        }
    }
}

const
    isStrictEqual = a => b => a === b,
    object = { a: 'foo', b: 'bar', c: 'baz' }
    
console.log(findKey(object, isStrictEqual('bar')));
console.log(findKey(object, isStrictEqual('cat')));