Ste*_*McD 3 javascript arrays extjs
我有一个数组包含一个数组数组,如果这是有道理的.例如:
[[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6]]
Run Code Online (Sandbox Code Playgroud)
我想看一个数组是否存在数组,所以如果[1,2,3]完全重复.我曾尝试使用.indexOf方法,但确实找到了副本.我也尝试过Extjs手动遍历数组并评估每个内部数组,这就是我做的方法:
var arrayToSearch = [[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6]];
var newArray = [1, 2, 3];
Ext.each(arrayToSearch, function(entry, index){
console.log(newArray, entry);
if(newArray == entry){
console.log(index);
};
});
Run Code Online (Sandbox Code Playgroud)
这也没有检测到重复.console.log将输出[1,2,3]和[1,2,3]但不会将它们识别为相等.我也尝试了===评估器,但显然因为==不起作用===不会工作.我在斗智斗勇,有任何建议.
nto*_*end 10
使用==
或===
不使用两个数组进行比较,因为它们不是同一个对象.如果要确定两个数组的元素相等,则需要逐个元素地比较数组.
我怀疑你会从使用类似技巧join(',')
然后使用字符串操作中获得任何收益.以下应该工作:
function arraysAreEqual (a, b) {
if (a.length != b.length) {
return false;
}
for (var i=0; i<a.length; i++) {
if (a[i] != b[i]) {
return false;
}
}
return true;
}
function containsArray (arrays, target) {
for (var i=0; i<arrays.length; i++) {
if (arraysAreEqual(arrays[i], target)) {
return true;
}
}
return false;
}
var arraysToSearch = [[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6]];
var newArray = [1, 2, 3];
containsArray(arraysToSearch, newArray);
Run Code Online (Sandbox Code Playgroud)