我想删除对象,如果它们是相同的值 例如 第一个数组(disnicknames)
{ '1': { blko: 1 }, '13': { blko: 13 } }
第二个数组(昵称)
{ '1': { online: false, stest: 765767, thnick: 'kjjkjkj', userid: 1 },
'13': { online: false, stest: 87, thnick: 'nnnmm', userid: 13 },'18': { online: true, stest: 56, thnick: 'iiii', userid: 18 }, }
我想从第二个数组中删除对象,如果用户标识或对象之前的数字,例如
'13':{bla:bla,...,...,..,}
是第一个数组中的一个数字,如1或13,因此最终输出应为
{ '18': { online: true, stest: 56, thnick: 'iiii', userid: 18 } }
所以我试着写这段代码
for (var i = 0, len = ol.length; i < len; i++) {
for (var j = 0, len2 = ol2.length; j < len2; j++) {
//console.log('disnicknames[j].blko',disnicknames[j].blko);
if (nicknames[i].userid === disnicknames[j].blko) {
nicknames.splice(j, 1);
len2=ol2.length;
//console.log()
console.log('length1',ol.length);
console.log('length2',ol2.length);
}
}
}
但我收到此错误
TypeError:无法读取未定义
的属性“userid”
答案 0 :(得分:1)
好的,我建议你这样做(如果你可以使用underscore.js):
_.forEach(nicknames, (value, key) => {
_.forEach(disnicknames, (val, ke) => {
if (key === ke) delete nicknames[key]
})
})
答案 1 :(得分:1)
因为你实际上并不是迭代数组,而是一个对象。没有nicknames[i]
,因为它没有index
而只有key
。你必须通过它的键重复它
var disnicknames = { '1': { blko: 1 }, '13': { blko: 13 } };
var nicknames = { '1': { online: false, stest: 765767, thnick: 'kjjkjkj', userid: 1 }, '13': { online: false, stest: 87, thnick: 'nnnmm', userid: 13 },'18': { online: true, stest: 56, thnick: 'iiii', userid: 18 } };
for (var key1 in nicknames) {
if (nicknames.hasOwnProperty(key1)) {
for (var key2 in disnicknames) {
if (disnicknames.hasOwnProperty(key2)) {
if (key2 == key1) {
delete nicknames[key1];
}
}
}
}
}
console.log(nicknames);