因此,基于ajax返回,我将每个唯一搜索的对象数组推送到另一个数组。从这里,我正在迭代最近的搜索数组并渲染对象。完美地做到这一点
我现在要做的是,每次新搜索时,检查结果的id ===是否为数组对象数组中的现有id。
items = [
[{id:1, name:blue},{id:21, name:red}],
[{id:5, name:yellow},{id:232, name:green}]
[{id:1, name:blue},{id:9, name:red}]
]
每个嵌套数组都是一个ajax响应对象,我将其推送到items数组。
所以我想知道如何查看数组对象数组,看看项目的id是1,我可以在项目[0] [0]中排除id为1的对象。
我想也许是items.includes但不确定这是否有效?
如果有任何意义,请告诉我。
答案 0 :(得分:0)
您可以使用Array#some
迭代数组,如果找到了给定的ID,则返回true
。
function checkId(id, array) {
return array.some(function (a) {
return a.some(function (b) {
return b.id === id;
});
});
}
var items = [[{ id: 1, name: 'blue' }, { id: 21, name: 'red' }], [{ id: 5, name: 'yellow' }, { id: 232, name: 'green' }],[{ id: 1, name: 'blue' }, { id: 9, name: 'red' }]];
console.log(checkId(1, items));
console.log(checkId(42, items));
ES6
function checkId(id, array) {
return array.some(a => a.some(b => b.id === id));
}
var items = [[{ id: 1, name: 'blue' }, { id: 21, name: 'red' }], [{ id: 5, name: 'yellow' }, { id: 232, name: 'green' }],[{ id: 1, name: 'blue' }, { id: 9, name: 'red' }]];
console.log(checkId(1, items));
console.log(checkId(42, items));
答案 1 :(得分:0)
如果您想要排除对象,可以过滤数组。
var filtered = items.map(function(arr) {
return arr.filter(function(obj) {
return obj.id !== 1
});
});
过滤后将成为:
[
[{id:21, name:red}],
[{id:5, name:yellow}, {id:232, name:green}],
[{id:9, name:red}]
]
答案 2 :(得分:0)
您可以使用forEach
循环,如果有指定ID的对象,您可以使用splice
将其删除
var items = [
[{id:1, name:'blue'},{id:21, name:'red'}],
[{id:5, name:'yellow'},{id:232, name:'green'}],
[{id:1, name:'blue'},{id:9, name:'red'}]
]
function removeObj(ar, id) {
ar.forEach(function(e) {
e.forEach(function(a, i) {
if(a.id == id) e.splice(i, 1);
});
});
}
removeObj(items, 1);
console.log(items);