Arrays 数组删除';s与其他数组中的对象匹配
如果对象的值相同,我希望从中删除对象 例如 第一个数组(别名) 第二个数组(昵称) 我想从第二个数组中删除该对象,例如,如果用户ID或对象前面的数字是 '13':{bla:bla 第一个数组中的一个数字像1或13,所以最终输出应该是Arrays 数组删除';s与其他数组中的对象匹配,arrays,node.js,Arrays,Node.js,如果对象的值相同,我希望从中删除对象 例如 第一个数组(别名) 第二个数组(昵称) 我想从第二个数组中删除该对象,例如,如果用户ID或对象前面的数字是 '13':{bla:bla 第一个数组中的一个数字像1或13,所以最终输出应该是 { '18': { online: true, stest: 56, thnick: 'iiii', userid: 18 } } 所以我试着写这段代码 for (var i = 0, len = ol.length; i < len; i++) {
{ '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);
}
}
}
for(var i=0,len=ol.length;i
但是我得到了这个错误
TypeError:无法读取未定义的属性“userid”
好的,我建议您这样做(如果您可以使用下划线.js):
因为您实际上不是在迭代数组,而是一个对象。没有
昵称[i]
,因为它没有索引
,只有键
。您必须通过其键对其进行迭代
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);
你确定每个i值都有昵称[i]吗?你能发布一个包含昵称、昵称、ol和ol2的console.log吗?什么是
昵称
?你能给我们看一个完整的代码吗?帖子中的输出是昵称和昵称的控制台输出,而昵称输出的长度是2,nucknames长度是3,昵称和昵称是他问题中的数组,但什么是ol和ol2?@kikiwie var kokshh=昵称;var fu=昵称;var ol=Object.keys(kokshh);var ol2=Object.keys(fu);
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);
}
}
}
_.forEach(nicknames, (value, key) => {
_.forEach(disnicknames, (val, ke) => {
if (key === ke) delete nicknames[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);