我有一个数组包含一个数组数组,如果这是有道理的.例如:
[[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6]]
我想看一个数组是否存在数组,所以如果[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);
};
});
这也没有检测到重复. console.log将输出[1,2,3]和[1,2,3]但不会将它们识别为相等.我也尝试了===评估器,但显然因为==不起作用===不会工作.我在斗智斗勇,有任何建议.
解决方法:
使用==或===比较两个数组将不起作用,因为它们不是同一个对象.如果要确定两个数组的元素相等,则需要逐个元素地比较数组.
我怀疑你会从使用诸如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);
原文地址:https://codeday.me/bug/20190713/1445238.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。