javascript - 如何比较两个对象数组并纠正相同的键值?

标签 javascript arrays loops object

我已经搜索过,但没有找到我需要的技巧。

我正在尝试比较具有相同键的 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/

相关文章:

javascript - 如何使用 laravel 和 Ajax 将响应结果附加到特定类上

jquery - 如何使用序列化并发送ajax(johnny sortable插件)

带有菜单功能的 Python 主函数循环不起作用?

c# - .Net 中的定时器和循环是否准确?

python - 遍历 Python 中的间隔列表并返回奇数和偶数?

Javascript:如何制作这个变量。全局工作

javascript - jQuery inArray 找不到匹配项

javascript - 使用 owl carousel 和 Bootstrap 3 让图像的宽度和高度居中

javascript - javascript 迭代对象元素

c - 通过在 C 中分配整数数组来理解这种行为