我已经搜索过,但没有找到我需要的技巧。
我正在尝试比较具有相同键的 2 个对象数组,如果 arr2 中的值不同,则更新 arr1。 Here是一个可以玩的代码笔。
let arr1 = [{val1: "dog", val2: "friendly"},{val1: "cat", val2: "fluffy"}]
let arr2 = [{val1: "cat", val2: "evil"},{val1: "mouse", val2: "tiny"},{val1: "hippo", val2: "big"}]
函数的预期结果应该是纠正 arr1 中包括 val1:"cat" 的对象:
{val1: "cat", val2: "fluffy"} -----> {val1: "cat", val2: "evil"}
更新后的 arr1 应该像这样返回:
{val1: "dog", val2: "friendly"}, { val1: "cat", val2: "evil"}
诀窍是,代码也应该双向工作。例如,如果 arr1 中有 {val1: "big", val2: "puma"},则通过替换 "puma"它将更改为 {val1: "big", val2: "hippo"},因为值 "big"链接到 arr2 中的“hippo”。
关于如何实现这一目标有什么想法吗?谢谢!
最佳答案
尝试下面的函数 - 这将满足 arr1 的两种情况
function validateArray() {
arr2.forEach(function(arr2Element) {
arr1.forEach(function(arr1Element) {
if (arr2Element.val1 === arr1Element.val1) {
arr1Element.val2 = arr2Element.val2;
} else if (arr2Element.val2 === arr1Element.val1) {
arr1Element.val2 = arr2Element.val1;
}
});
});
console.log(arr1);
}
关于javascript - 如何比较两个对象数组并纠正相同的键值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59888596/