在两个数组中使用密钥和值

时间:2015-10-19 14:38:07

标签: javascript jquery json

我有一个我想要比较的两个数组的函数。两个数组都包含相同的数据结构,但可以具有不同的值,因为它表示HTML表单的ID和值。但是我只想检查具有ID/Key“textarea'1”,“textarea2”和“textarea3”的对象,并检查它们的值是否与newVals和oldVals不同。

我如何存档?

function CheckTextChange() {        
    var formData = $.parseJSON(data);
    var dbData = $.parseJSON(oldData);

    var newVals = formData[0].texts[0];
    var oldVals = dbData[0].texts[0];
}   

1 个答案:

答案 0 :(得分:1)

这是一个compareKeys函数,它接受一组键名和两个对象,并返回两个对象中具有不同值的键数组:

function compareKeys( keynames, objA, objB ){
   var diffs = keynames.filter(function( key ){
      if( key in objA && key in objB ){
        return objA[ key ] != objB[ key ];
      }
      return true; // mismatch if key doesn't exist in any object
   });
   return diffs;
}

function CheckTextChange() {        
    var formData = $.parseJSON(data);
    var dbData = $.parseJSON(oldData);

    var diffs = compareKeys( ["textarea1", "textarea2" ], formData, dbData );
    if( diffs.length > 0 ){
       console.log( "Keys %s don't match", diffs.join() );
    }
} 

fiddle demo