【发布时间】:2021-11-30 03:58:57
【问题描述】:
我有 2 个对象数组。一个是旧数组,另一个是新数组。当比较旧数组和新数组时,我想要的输出是一个包含任何属性已更改的所有元素的数组。它应该适用于对象可能具有的任何属性,而不限于给定的 3。不过,你不需要处理嵌套对象。
let old = [
{
id: "f4101804-a587-4420-97d3-5691a93c9143",
name: "Mice",
price: "25"
},
{
id: "132a5f3b-7350-44e6-8ac8-3ba1b558ff1c",
name: "acooer",
price: "25"
},
{
id: "b1cf9e9d-e712-4624-b754-fb9c48a75716",
name: "Yhgg",
price: "25"
},
{
id: "01381e2c-ee25-4461-93cb-d54c812551e9",
name: "anix",
price: "25"
}
];
let new = [
{
id: "f4101804-a587-4420-97d3-5691a93c9143",
name: "Mice",
price: "25"
},
{
id: "132a5f3b-7350-44e6-8ac8-3ba1b558ff1c",
name: "acoo",
price: "25"
},
{
id: "b1cf9e9d-e712-4624-b754-fb9c48a75716",
name: "Yhgg",
price: "26"
},
{
id: "01381e2c-ee25-4461-93cb-d54c812551e9",
name: "anix",
price: "25"
}
];
在给定的示例中,第二个元素的 name 属性和第三个元素的 price 属性已更改。所以输出应该是
[
{
id: '132a5f3b-7350-44e6-8ac8-3ba1b558ff1c',
name: 'acoo',
price: '25'
},
{
id: 'b1cf9e9d-e712-4624-b754-fb9c48a75716',
name: 'Yhgg',
price: '26'
}
]
我试过这个,但是当我改变对象的位置时,它被认为是对象的变化。
import "./styles.css";
const a = [
{
id: "f4101804-a587-4420-97d3-5691a93c9143",
name: "Mice",
price: "25"
},
{
id: "132a5f3b-7350-44e6-8ac8-3ba1b558ff1c",
name: "acooer",
price: "25"
},
{
id: "b1cf9e9d-e712-4624-b754-fb9c48a75716",
name: "Yhgg",
price: "25"
},
{
id: "01381e2c-ee25-4461-93cb-d54c812551e9",
name: "anix",
price: "25"
}
];
const b = [
{
id: "f4101804-a587-4420-97d3-5691a93c9143",
name: "Mice",
price: "25"
},
{
id: "132a5f3b-7350-44e6-8ac8-3ba1b558ff1c",
name: "acoo",
price: "25"
},
{
id: "b1cf9e9d-e712-4624-b754-fb9c48a75716",
name: "Yhgg",
price: "26"
},
{
id: "01381e2c-ee25-4461-93cb-d54c812551e9",
name: "anixx",
price: "25"
}
];
let result = b.filter(
(elm) => !a.map((elm) => JSON.stringify(elm)).includes(JSON.stringify(elm))
);
console.log(result);
document.getElementById("app").innerHTML = JSON.stringify(result, null, 2);
【问题讨论】:
-
在 SO 上,习惯上是在您编写的代码上寻求帮助,而不是在编写代码时寻求帮助。请编辑问题以显示尝试的解决方案。
-
我几乎编写了所有代码。但是当我改变物体的位置时,它被认为是物体的变化。解决方案在链接中查看
标签: arrays arrayobject