gpt4 book ai didi

javascript - 如何使用 underscore.js 库中的 _.where 方法进行更详细的搜索

转载 作者:数据小太阳 更新时间:2023-10-29 03:49:19 25 4
gpt4 key购买 nike

var a = {
"title": "Test 1",
"likes": {
"id": 1
}
}

var b = {
"title": "Test 2",
"likes": {
"id": 2
}
}


var c = [a, b];

var d = _.where(c, {
"title": "Test 2",
"likes": {
"id": 2
}
});
//d => outputs an empty array []

在这种情况下,我希望获得对内存中对象的引用,但是 d但实际上它只适用于根属性。

_.where(c, {title: "Test 2"});
=> outputs [object]

其中 object 是 c[1] 的引用;

编辑: 使用 _.filter() 找到了可能的解决方案

_.filter( c, function(item){ 
if (item.title == "Test 1" && item.likes.id == 1){
return item;
}
})

outputs => [object] with reference for variable a

最佳答案

_.filter是执行此操作的正确方法,_.where只是一个 _.filter 快捷方式,用于过滤简单的键/值对。你可以从the source看到这个:

// Convenience version of a common use case of `filter`: selecting only objects
// containing specific `key:value` pairs.
_.where = function(obj, attrs, first) {
if (_.isEmpty(attrs)) return first ? void 0 : [];
return _[first ? 'find' : 'filter'](obj, function(value) {
for (var key in attrs) {
if (attrs[key] !== value[key]) return false;
}
return true;
});
};

文档可以更明确一点,但至少源代码中的评论是清楚的。

关于javascript - 如何使用 underscore.js 库中的 _.where 方法进行更详细的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20888621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com