我正试图将"arrayOne“推入多级数组(ArrayTwo)中。首先,我想确保它不存在,所以没有重复的。这是我的代码:
var arrayOne = ["3", "total_2"];
var arrayTwo = [["1", "total_2"], ["2", "total_4"], ["2", "total_6"], ["2", "total_11"]];
if (arrayTwo has arrayOne) {
//do nothing
} else {
arrayTwo.push(arrayOne);
}我想我只是对这个部分的语法感到困惑:
if (arrayTwo has arrayOne) {发布于 2015-11-30 23:56:02
没有内置函数来检查另一个数组中是否存在数组内容,所以您只需构建一个:
function arrayCompare(arr1, arr2) {
if (arr1.length !== arr2.length) {
return false;
}
for (var i = 0; i < arr1.length; i++) {
if (arr1[i] !== arr2[i]) {
return false;
}
}
return true;
}
// see if the contents of one array is in another array as a sub-array
function lookForArray(source, content) {
var subArray;
for (var i = 0; i < source.length; i++) {
if (arrayCompare(source[i], content)) {
return true;
}
}
return false;
}用法:
var arrayOne = ["3", "total_2"];
var arrayTwo = [["1", "total_2"], ["2", "total_4"], ["2", "total_6"], ["2", "total_11"]];
if (!lookForArray(arrayTwo, arrayOne)) {
// arrayOne not found in arrayTwo
}工作片段:
function arrayCompare(arr1, arr2) {
if (arr1.length !== arr2.length) {
return false;
}
for (var i = 0; i < arr1.length; i++) {
if (arr1[i] !== arr2[i]) {
return false;
}
}
return true;
}
// see if the contents of one array is in another array as a sub-array
function lookForArray(source, content) {
var subArray;
for (var i = 0; i < source.length; i++) {
if (arrayCompare(source[i], content)) {
return true;
}
}
return false;
}
var arraySource = [["1", "total_2"], ["2", "total_4"], ["2", "total_6"], ["2", "total_11"]];
var arrayOne = ["3", "total_2"];
var arrayTwo = ["2", "total_4"];
if (!lookForArray(arraySource, arrayOne)) {
// arrayOne not found in arrayTwo
document.write("arrayOne not found in arraySource<br>");
}
if (lookForArray(arraySource, arrayTwo)) {
document.write("arrayTwo found in arraySource");
}
发布于 2015-11-30 23:58:44
您必须进入每个单独的数组,并将元素与要添加的数组进行比较。
如果您有array1 = ["1", "total_2"],并尝试将其与大数组(arrayTwo)进行比较。就像array1 === arrayTwo[0]。这将产生false,因为JS不会对数组执行深度重复检查,它只执行实例比较。
发布于 2015-12-01 00:28:45
您可以使用$.each函数迭代arrayTwo中的每个元素,并找到匹配第一项的元素。如果找不到,就加进去。
var arrayOne = ["3", "total_2"];
var arrayTwo = [["1", "total_2"], ["2", "total_4"], ["2", "total_6"], ["2", "total_11"]];
var elementFound = false;;
$.each(arrayTwo,function(i)
{
if(arrayTwo[i][0] === arrayOne[0][0]) // compares and matches 3 to 1,2,2,2
elementFound = true;
});
if(!elementFound)
arrayTwo.push(arrayOne);示例:http://jsfiddle.net/qk5qj33u/11/
https://stackoverflow.com/questions/34010157
复制相似问题