在使用.map和.filter时,我遇到了一些问题,无法获得两个对象中不相似的对象。要从arrayObjTwo中获取不寻常的对象,我需要做哪些更改。
码
const arrayObjOne = [{
countryCode: "US",
description: " Backyard of home",
id: "1234",
location: "US",
name: "Backyard",
}]
// Array Object 2
const arrayObjTwo =[
{ description: "Backyard of home", spaceName: "Backyard" },
{ description: "Frontyard of home", spaceName: "Frontyard"},
]
const object1Names = arrayObjOne.map(obj => obj.Name); // for caching the result
const results = arrayObjTwo.filter(name => !object1Names.includes(name));
console.log(results);一个编译器代码:https://onecompiler.com/javascript/3xy92hpmp
预期结果:
const arrayObjTwo =[
{ description: "Frontyard of home", spaceName: "Frontyard" }
]谢谢..
发布于 2022-04-06 05:38:33
您对结果的筛选是错误的。您应该使用"object.spaceName“,而不是仅仅使用”名称“,因为您正在遍历对象数组而不仅仅是字符串
// So this line:
const results = arrayObjTwo.filter(name => !object1Names.includes(name));
// Should be:
const results = arrayObjTwo.filter(object => !object1Names.includes(object.spaceName));
// And you have a typo:
const object1Names = arrayObjOne.map(obj => obj.Name);
// Should be like so as keys and properties are case-sensitive:
const object1Names = arrayObjOne.map(obj => obj.name);因此,这一切都应该是:
const arrayObjOne = [{
countryCode: "US",
description: " Backyard of home",
id: "1234",
location: "US",
name: "Backyard",
}]
// Array Object 2
const arrayObjTwo =[
{ description: "Backyard of home", spaceName: "Backyard" },
{ description: "Frontyard of home", spaceName: "Frontyard"},
]
const object1Names = arrayObjOne.map(obj => obj.name); // for caching the result
const results = arrayObjTwo.filter(object => !object1Names.includes(object.spaceName));
console.log(results);发布于 2022-04-06 05:45:15
你快到了!
您的map-语句中有大写名称,但是javascript区分大小写,所以您查找的“名称”字段不存在,因此您的"object1Names“返回未定义的字段。
你应该查一下obj.name
您还需要将其与arrayObjTwo的"spaceName"-field,而不是整个对象进行比较。
下面是您进行这些小更改的代码:
const arrayObjOne = [{
countryCode: "US",
description: " Backyard of home",
id: "1234",
location: "US",
name: "Backyard",
}]
// Array Object 2
const arrayObjTwo =[
{ description: "Backyard of home", spaceName: "Backyard" },
{ description: "Frontyard of home", spaceName: "Frontyard"},
]
const object1Names = arrayObjOne.map(obj => obj.name); // for caching the result
const results = arrayObjTwo.filter(obj => !object1Names.includes(obj.spaceName));
console.log(results);发布于 2022-04-06 05:41:28
你需要这个吗?
const arr1 = [{
countryCode: "US",
description: " Backyard of home",
id: "1234",
location: "US",
name: "Backyard",
}]
// Array Object 2
const arr2 =[
{ description: "Backyard of home", spaceName: "Backyard" },
{ description: "Frontyard of home", spaceName: "Frontyard"},
]
const names = arr1.map(item => item.name); // for caching the result
console.log(names);
const res = arr2.filter(item => !names.includes(item.name));
console.log(res);
https://stackoverflow.com/questions/71761493
复制相似问题