我有两个不同的对象数组,storedArray
存储在我的文件系统中并且inputArray
根据用户的输入进行更新storedArray
。每个数组的最小长度为 1,最大数量没有上限。而且它们的长度不一定必须相同。所以我想要的是循环每个数组并且:
- 如果名字来自
inputArray
与 匹配storedArray
姓名和年龄相同,则不执行任何操作storedArray
但将该物体保留在storedArray
。 (例如约翰)。
- 如果名字来自
inputArray
与 匹配storedArray
姓名和年龄不相同,则仅更新旧对象中的年龄值storedArray
。 (例如简)。
- 如果里面有一个新对象
inputArray
使用与任何 in 都不匹配的不同名称storedArray
名称,然后将新对象推送到storedArray
。 (例如莫里斯)。
- 必须移除其中的其他物体
storedArray
与以下不匹配inputArray
。 (例如乔安娜、吉姆)。
更新这个
const storedArray = [
{"name": "John", "age": 25, "courses": 5},
{"name": "Jane", "age": 21, "courses": 3},
{"name": "Joanna", "age": 19, "courses": 2},
{"name": "Jim", "age": 20, "courses": 4},
];
由此
const inputArray = [
{"name": "Jane", "age": 23, "courses": 0},
{"name": "John", "age": 25, "courses": 0},
{"name": "Morris", "age": 18, "courses": 0}
];
to this:
const storedArray = [
{"name": "John", "age": 25, "courses": 5},
{"name": "Jane", "age": 23, "courses": 3},
{"name": "Morris", "age": 18, "courses": 0}
];
我尝试过这个for of
循环但我得到 22 个结果。其中一些失踪了。此外,我尝试将其推入一个新数组中。 SO 中还有其他具有相同标题的帖子,但最终目标与我的目标不符。但我仍然尝试了他们的代码但不起作用。
这是我尝试过的:
const storedArray = [
{"name": "John", "age": 25, "courses": 5},
{"name": "Jane", "age": 21, "courses": 3},
{"name": "Joanna", "age": 19, "courses": 2},
{"name": "Jim", "age": 20, "courses": 4}
];
const inputArray = [
{"name": "Jane", "age": 23, "courses": 0},
{"name": "John", "age": 25, "courses": 0},
{"name": "Morris", "age": 18, "courses": 0}
];
let newArray = [];
for(let item of storedArray) {
for(let each of inputArray) {
if(item.name === each.name && item.age === each.age){
newArray.push(item);
}else if(item.name === each.name && item.age !== each.age) {
item.age = each.age;
newArray.push(item);
}else if(item.name !== each.name){
newArray.push(each);
newArray.push(item);
}
}
}
console.log(newArray);