【问题标题】:lodash _.findKey equivalent in Javascript or jQueryJavascript 或 jQuery 中的 lodash _.findKey 等效项
【发布时间】:2022-01-11 21:04:15
【问题描述】:

我在游戏中有一系列片段,一开始我将它们的存储 DIV 与样式一起存储在一个对象中,相应的密钥是一个加密的数字。在游戏结束时,我检查已单击的部分,以查看其当前 z-index 是否与存储在对象中的原始样式相匹配。 目前我正在使用 lodash,它运行良好,但我想删除 lodash,以免加载这个额外的库。我的问题是,我根本无法将这三行代码翻译成纯 Javascript(或 jQuery)——我是个初学者,现在已经花了几个小时试图解决这个问题。任何意见,将不胜感激。 这是我的“lodash”代码:

var myVar = _.findKey(myObject, function (storedDIV) {
    return storedDIV.css('z-index') == clickedDIV.css('z-index');
});

【问题讨论】:

  • Lodash 是开源的。您可以复制findKey的代码
  • @jabba - 超级 - 完美运行,非常感谢 - 只是为了大家的信息 - 这样做意味着我必须只写“findKey”而不是“_.findKey”。

标签: javascript object lodash


【解决方案1】:

您可以使用Object.keysArray.find() 创建与_.findKey() 类似的函数。该函数接受谓词,或者您可以使用默认的身份谓词 (o => o),但它不支持其他 lodash _.findKey() 速记。

const findKey = (obj, predicate = o => o) => Object.keys(obj)
    .find(key => predicate(obj[key], key, obj))

// example 1 - passing a predicate
const users = {'barney':  { 'age': 36, 'active': true },'fred':    { 'age': 40, 'active': false },'pebbles': { 'age': 1,  'active': true }}
console.log(findKey(users, o => o.age < 40)) // barney

// example 2 - using default identity predicate
const flags = { a: false, b: true, c: false }
console.log(findKey(flags)) // b

【讨论】:

    猜你喜欢
    • 2020-08-08
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    相关资源
    最近更新 更多