如何使用下划线提取基于 id 的对象
how to pluck objects based on ids using underscore
我有一个数组,里面有一堆 id
var arr = ["562f464a9cdf7e6e33aa2514","562f464a9cdf7e6e33aa2514"];
我有一个看起来有点像这样的对象数组
[{
"boatId": "562f464a9cdf7e6e33aa2514",
"canPoll": true,
}, {
"boatId": "562f4647e6e33aa2514",
"canPoll": true,
}]
我想从第二个列表中取出id不在数组中的对象arr
我想到了下面这行,但它 returns false;
var finalBoats = _.map(boats, function (boat) {
if (originalBoats.length > 0) {
_.each(originalBoats, function (originalBoat) {
if (originalBoat === boat.boatId) {
return boat;
}
});
} else {
return boat;
}
});
我还必须考虑第一个数组可能为空的时间。
不确定如何在下划线中执行此操作。
更新:这正是我想要做的
var arr = ["1","2"];
var unfilteredBoats = [{
"boatId": "3",
"canPoll": true,
}, {
"boatId": "2",
"canPoll": true,
}]
所以提取的元素数组应该是
[{
"boatId": "3",
"canPoll": true,
}]
此外,如果 arr 为空,则根本不应该过滤,那部分相当简单。
您可以在 VanillaJS
中使用 filter
var filteredArr = originalBoats.filter(function(e) {
return arr.indexOf(e.boatId) === -1;
});
var filteredArr = _.filter(originalBoats, function(el) {
return _.contains(arr, el.boatId) === false;
});
演示
var arr = ["1", "2"];
var unfilteredBoats = [{
"boatId": "3",
"canPoll": true,
}, {
"boatId": "2",
"canPoll": true,
}];
var filteredArr = unfilteredBoats.filter(function(e) {
return arr.indexOf(e.boatId) === -1;
});
console.log(filteredArr);
document.getElementById('result').innerHTML = JSON.stringify(filteredArr, 0, 4);
<pre id="result"></pre>
我有一个数组,里面有一堆 id
var arr = ["562f464a9cdf7e6e33aa2514","562f464a9cdf7e6e33aa2514"];
我有一个看起来有点像这样的对象数组
[{
"boatId": "562f464a9cdf7e6e33aa2514",
"canPoll": true,
}, {
"boatId": "562f4647e6e33aa2514",
"canPoll": true,
}]
我想从第二个列表中取出id不在数组中的对象arr
我想到了下面这行,但它 returns false;
var finalBoats = _.map(boats, function (boat) {
if (originalBoats.length > 0) {
_.each(originalBoats, function (originalBoat) {
if (originalBoat === boat.boatId) {
return boat;
}
});
} else {
return boat;
}
});
我还必须考虑第一个数组可能为空的时间。
不确定如何在下划线中执行此操作。
更新:这正是我想要做的
var arr = ["1","2"];
var unfilteredBoats = [{
"boatId": "3",
"canPoll": true,
}, {
"boatId": "2",
"canPoll": true,
}]
所以提取的元素数组应该是
[{
"boatId": "3",
"canPoll": true,
}]
此外,如果 arr 为空,则根本不应该过滤,那部分相当简单。
您可以在 VanillaJS
中使用 filtervar filteredArr = originalBoats.filter(function(e) {
return arr.indexOf(e.boatId) === -1;
});
var filteredArr = _.filter(originalBoats, function(el) {
return _.contains(arr, el.boatId) === false;
});
演示
var arr = ["1", "2"];
var unfilteredBoats = [{
"boatId": "3",
"canPoll": true,
}, {
"boatId": "2",
"canPoll": true,
}];
var filteredArr = unfilteredBoats.filter(function(e) {
return arr.indexOf(e.boatId) === -1;
});
console.log(filteredArr);
document.getElementById('result').innerHTML = JSON.stringify(filteredArr, 0, 4);
<pre id="result"></pre>