首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery,检查多层数组中是否已经有此内容。

Jquery,检查多层数组中是否已经有此内容。
EN

Stack Overflow用户
提问于 2015-11-30 23:47:41
回答 3查看 44关注 0票数 0

我正试图将"arrayOne“推入多级数组(ArrayTwo)中。首先,我想确保它不存在,所以没有重复的。这是我的代码:

代码语言:javascript
复制
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);   
}

我想我只是对这个部分的语法感到困惑:

代码语言:javascript
复制
if (arrayTwo has arrayOne) {

小提琴:https://jsfiddle.net/odksh2th/

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-30 23:56:02

没有内置函数来检查另一个数组中是否存在数组内容,所以您只需构建一个:

代码语言:javascript
复制
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;
}

用法:

代码语言:javascript
复制
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
}

工作片段:

代码语言:javascript
复制
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");
}

票数 2
EN

Stack Overflow用户

发布于 2015-11-30 23:58:44

您必须进入每个单独的数组,并将元素与要添加的数组进行比较。

如果您有array1 = ["1", "total_2"],并尝试将其与大数组(arrayTwo)进行比较。就像array1 === arrayTwo[0]。这将产生false,因为JS不会对数组执行深度重复检查,它只执行实例比较。

票数 1
EN

Stack Overflow用户

发布于 2015-12-01 00:28:45

您可以使用$.each函数迭代arrayTwo中的每个元素,并找到匹配第一项的元素。如果找不到,就加进去。

代码语言:javascript
复制
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/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34010157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档