Javascript JS:比较对象数组,如果缺少,则将对象添加到数组中

Javascript JS:比较对象数组,如果缺少,则将对象添加到数组中,javascript,arrays,object,javascript-objects,Javascript,Arrays,Object,Javascript Objects,也许我把这个问题复杂化了 我有几个数组,其中填充的对象只有一个简单的名称:numeric value键值配对 我想确保所有数组都包含相同的对象,如果它们没有向数组中添加一个或多个值为零值的对象 array1 = [{'tool1': 24}] array2 = [{'tool1': 2}, {'tool2': 21}, {'tool3': 1}] array3 = [{'tool1': 23}, {'tool2': 13}, {'tool3': 2}, {'tool4': 10}] array4

也许我把这个问题复杂化了

我有几个数组,其中填充的对象只有一个简单的
名称:numeric value
键值配对

我想确保所有数组都包含相同的对象,如果它们没有向数组中添加一个或多个值为零值的对象

array1 = [{'tool1': 24}]
array2 = [{'tool1': 2}, {'tool2': 21}, {'tool3': 1}]
array3 = [{'tool1': 23}, {'tool2': 13}, {'tool3': 2}, {'tool4': 10}]
array4 = [{'tool1': 18}, {'tool2': 29}, {'tool3': 19}, {'tool4': 10}]

// After the check and addition of objects, the final result of array1 and array2 would be:

array1 = [{'tool1': 24}, {'tool2': 0}, {'tool3': 0}, {'tool4': 0}]

array2 = [{'tool1': 2}, {'tool2': 21}, {'tool3': 1}, {'tool4': 0}]

// The other arrays would remain un-changed 
谢谢你抽出时间

array1=[{'tool1':24}]
array2=[{'tool1':2},{'tool2':21},{'tool3':1}]
数组3=[{'tool1':23},{'tool2':13},{'tool3':2},{'tool4':10}]
数组4=[{'tool1':18},{'tool2':29},{'tool3':19},{'tool4':10}]
函数myFunc(arr){
对于(设i=1;i元素['tool'+i])){
设obj={};
obj['tool'+i]=0;
方位推力(obj);
}
}
}
myFunc(阵列1)
log('array1:'+JSON.stringify(array1));
myFunc(array2)
log('array2:'+JSON.stringify(array2));
myFunc(阵列3)
log('array3:'+JSON.stringify(array3));
myFunc(阵列4)

log('array4:'+JSON.stringify(array4))为什么array1只有3项?难道不应该也有
tool4
吗?@RinkeshGolwala是的-那是我的错。更正。循环所有数组,并创建一个包含所有对象键的
集。循环遍历所有对象键和所有数组。如果数组没有具有指定键的对象,请将该对象添加到数组中。顺便说一句,具有不同键的对象数组使处理变得非常复杂。为什么不把它们都放在一个对象上,比如
{tool1:24,tool2:13,tool3:2}
?一般经验法则:数组通常应该包含统一的数据。如果您有一个对象数组,它们应该包含相同的属性。