2015-11-13 43 views
0

我有在阵列中的多个对象我想使元件中的每个对象相同比较两个对象和插入缺失元件

var objectArray = [obj1,obj2,obj3.........] 

obj1 ={ 
2002-Edad 15 a 64 años: 0.1854095, 
2003-Edad 15 a 64 años: 0.1531632, 
2005-Edad 15 a 64 años: 0.1887739, 
2006-Edad 15 a 64 años: 0.1754043, 
2007-Edad 15 a 64 años: 0.2038664, 
2008-Edad 15 a 64 años: 0.2270297, 
2009-Edad 15 a 64 años: 0.211827, 
2011-Edad 15 a 64 años: 0.2396887, 
2012-Edad 15 a 64 años: 0.2618066, 
2013-Edad 15 a 64 años: 0.2677819, 
var_descripcion: "Asalariados con contrato a término fijo (en %)"} 

obj2 ={ 
2002-Edad 15 a 64 años: 0.1854095, 
2003-Edad 15 a 64 años: 0.1531632, 
2005-Edad 15 a 64 años: 0.1887739, 
2006-Edad 15 a 64 años: 0.1754043, 
2007-Edad 15 a 64 años: 0.2038664, 
2011-Edad 15 a 64 años: 0.2396887, 
2012-Edad 15 a 64 años: 0.2618066, 
2013-Edad 15 a 64 años: 0.2677819, 
var_descripcion: "Asalariados con contrato a término fijo (en %)"} 

我想比较这阵列和插入缺少第二阵列即价值形态,

2008-Edad 15 a 64 años: 0.2270297 & 2009-Edad 15 a 64 años: 0.211827 

但值为0

这样,我想在类似

阵列中的所有对象

请帮忙;

回答

0

只需比较阵列;

  var array1 = [1,2,3,4,5], 
       array2 = [5,4,3,2,1], 
       array3 = [1,2,,6,7,8]; 

      function compareArrays(arr1, arr2) { 
       return $(arr1).not(arr2).length == 0 && $(arr2).not(arr1).length == 0 
      }; 
0

下面是一个如何做到这一点的例子。您会发现,在执行测试数组上的normalizeArray后,数组中的第二个对象将“second”属性初始化为0. Here's a fiddle of it working.

function mergeObject(from, to) { 
    for(var prop in from) { 
    if (typeof(to[prop]) === 'undefined') { 
     to[prop] = 0; 
    } 
    } 

    return to; 
} 

function normalizeArray(arr) { 
    var schema = {}; 
    for(var i = 0; i < arr.length; i++) { 
    schema = mergeObject(arr[i], schema); 
    } 

    for(var i = 0; i < arr.length; i++) { 
    arr[i] = mergeObject(schema, arr[i]); 
    } 
} 

var test1 = { 
    first: 1, 
    second: 2, 
    third: 3 
} 

var test2 = { 
    first: 1, 
    third: 3 
} 

var testArray = [test1, test2]; 

normalizeArray(testArray);