尝试 return 键值与这些值匹配的所有对象
Trying to return ALL objects with key values that match these values
所以假设我有一些 JSON:
{
"users": [{
"name": "bob",
"age": 16,
"likes": ["cats", "kayaking", "knitting"]
}, {
"name": "kyle",
"age": 19,
"likes": ["dogs", "soccer", "baseball"]
}, {
"name": "mike",
"age": 18,
"likes": ["cats", "cars", "kayaking"]
}]
}
我想遍历 return 所有用户对象,其中包括 "cats" 和 "kayaking"。我正在使用 lodash,但似乎没有 lodash 方法可以做到这一点。我只看到 _.findKey 和 _.includes。有没有我可以使用的方法或方法组可以做到这一点,还是我最好只使用香草 javascript?
如果你想使用 Vanilla JS:
您可以使用 indexOf
和比较器数组进行比较。
使用此比较器数组,您可以将结果筛选为 return 仅符合条件的对象。
另外使用 reduce
方法来 return 真或假,这取决于数组中的 一个 字符串是否与您的比较器数组匹配。
var comparator = ['dogs', 'baseball'];
var dogsAndBaseball = obj.users.filter(function(obj) {
return obj.reduce(function(acc, cur) {
return acc || comparator.indexOf(cur) > -1;
}, false);
});
这将 return
[{
"name": "kyle",
"age": 19,
"likes": ["dogs", "soccer", "baseball"]
}]
您正在寻找_.filter()
:
var output = _.filter(input.users, function(item) {
return _.includes(item.likes, 'cats')
&& _.includes(item.likes, 'kayaking');
});
它使用您指定的过滤函数过滤数组。如果此过滤器函数 returns true
用于数组的给定项目,则此项目将包含在结果数组中。
所以假设我有一些 JSON:
{
"users": [{
"name": "bob",
"age": 16,
"likes": ["cats", "kayaking", "knitting"]
}, {
"name": "kyle",
"age": 19,
"likes": ["dogs", "soccer", "baseball"]
}, {
"name": "mike",
"age": 18,
"likes": ["cats", "cars", "kayaking"]
}]
}
我想遍历 return 所有用户对象,其中包括 "cats" 和 "kayaking"。我正在使用 lodash,但似乎没有 lodash 方法可以做到这一点。我只看到 _.findKey 和 _.includes。有没有我可以使用的方法或方法组可以做到这一点,还是我最好只使用香草 javascript?
如果你想使用 Vanilla JS:
您可以使用 indexOf
和比较器数组进行比较。
使用此比较器数组,您可以将结果筛选为 return 仅符合条件的对象。
另外使用 reduce
方法来 return 真或假,这取决于数组中的 一个 字符串是否与您的比较器数组匹配。
var comparator = ['dogs', 'baseball'];
var dogsAndBaseball = obj.users.filter(function(obj) {
return obj.reduce(function(acc, cur) {
return acc || comparator.indexOf(cur) > -1;
}, false);
});
这将 return
[{
"name": "kyle",
"age": 19,
"likes": ["dogs", "soccer", "baseball"]
}]
您正在寻找_.filter()
:
var output = _.filter(input.users, function(item) {
return _.includes(item.likes, 'cats')
&& _.includes(item.likes, 'kayaking');
});
它使用您指定的过滤函数过滤数组。如果此过滤器函数 returns true
用于数组的给定项目,则此项目将包含在结果数组中。