查找所有不同嵌套数组元素的Javascript最佳实践
有两个大的、可能非常大的嵌套javascript数组。一个是当前的,另一个是此数组的上一次迭代。函数将需要找到所有不同的元素,并对任何更改采取行动 我知道如何制作一个函数来实现这一点,我想知道做这样一件事的最佳实践是什么。任何好的建议都将不胜感激。我正在考虑使用原生JavaScript和jQuery处理对不同元素的响应 这个问题涉及几件事。查找所有不同嵌套数组元素的Javascript最佳实践,javascript,jquery,arrays,recursion,Javascript,Jquery,Arrays,Recursion,有两个大的、可能非常大的嵌套javascript数组。一个是当前的,另一个是此数组的上一次迭代。函数将需要找到所有不同的元素,并对任何更改采取行动 我知道如何制作一个函数来实现这一点,我想知道做这样一件事的最佳实践是什么。任何好的建议都将不胜感激。我正在考虑使用原生JavaScript和jQuery处理对不同元素的响应 这个问题涉及几件事。 比较对象最有效的方法是什么。在javascript检查中,通过if,如果一个对象等于或不等于另一个对象,将始终说它不等于,即使它们相等。因此,需要对对象进行
就我个人而言,我认为递归对于这种情况是一种很好的实践
console.clear();
// Compare 2 nested arrays, do something if values don't match
function CompareArrays(arr1, arr2){
for(var i=0;i<arr1.length;i++){
if( typeof arr1[i] === "object"){
// traverse into nested array
CompareArrays( arr1[i], arr2[i] );
}else{
if (arr1[i] != arr2[i]){
// do something!
console.log( "mismatch @ "+ i +" a1: "+arr1[i]+" a2: "+ arr2[i]);
}
}
}
}
var a1 = [1,2,3,["a","b","c"],4,5,6,["d","e","f"]];
var a2 = [1,2,55,["a","tt","c"],4,5,6,["d","e","f"]];
CompareArrays( a1, a2);
console.clear();
//比较两个嵌套数组,如果值不匹配,请执行某些操作
功能比较阵列(arr1、arr2){
对于(var i=0;i
这将查看给定的第二个元素。并对其进行修改以删除任何共享的相等值。数组仍将保持不变,但所有相同的值现在都未定义。查看lodash库是如何执行此操作的。不同的元素,如在比较2时它们的显示顺序不同?或者我们正在查看2个数组中包含的内容总的来说,与顺序无关?也许你可以告诉我们你目前正在做什么,然后你可以得到一些关于最佳实践的意见。不幸的是,这个问题目前“不是一个真正的问题”syndrome.replicate of and of.这两个Brock都不处理嵌套数组。这只是如何处理,正如我知道如何处理的主题中所述。我想知道这样做的最佳方法是什么。这假设a1中的所有键都在a2中。a2不会有不同的键。是的,当然。你没有说数组会不同尺寸也一样。
function CompareArrays(arr1, arr2){
for(var key in arr1){
if( arr1[key] !== arr2[key]){
// traverse into nested array
if(typeof(arr1[key]) == 'object' || typeof(arr2[key]) == 'object'){
CompareArrays( arr1[key], arr2[key]);
}
}else{
delete arr2[key];
}
}
}
var a1 = [1,2,3,["a","b","c"],4,5,6,["d","e","f"]];
var a2 = [1,2,5445,["a","tt","c"],4,5,336,["d","edee","ffdf"], 'blablabla', 'I\'m extra'];
CompareArrays( a1, a2 );
console.log(a2);