在javascript/jQuery中对关联数组执行"Diff"操作?

Mat*_*rym 6 javascript arrays jquery loops associative-array

如果我有两个关联数组,那么对它们的值进行差异的最有效方法是什么?

例如,给定:

  array1 = {
    foreground: 'red',
    shape: 'circle',
    background: 'yellow'
  };

  array2 = {
    foreground: 'red',
    shape: 'square',
    angle: '90',
    background: 'yellow'
  };
Run Code Online (Sandbox Code Playgroud)

我如何检查另一个,以便缺少 或 附加的项目是结果数组.在这种情况下,如果我想比较array2中的array1,它将返回:

array3 = {shape: 'circle'}
Run Code Online (Sandbox Code Playgroud)

虽然如果我在array1中比较array2,它将返回:

array3 = {shape: 'square', angle: '90'}
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助!

RaY*_*ell 7

试试这个:

function diff(obj1, obj2) {
    var result = {};
    $.each(obj1, function (key, value) {
        if (!obj2.hasOwnProperty(key) || obj2[key] !== obj1[key]) {
            result[key] = value;
        }
    });

    return result;
}
Run Code Online (Sandbox Code Playgroud)