循环浏览javascript中的2个列表

时间:2014-04-22 07:06:22

标签: javascript for-loop

我有2个列表,我需要迭代它们并重复从主列表中删除。 例如:

ListA = {
    [25151, "China DC", "Mar 14, 2014"], [8171, "Singapore IMT", "Mar 14, 2014"]
}
ListB = {
    Object {
        id = 3, dcName = "Argentina DC", countrycode = 613
    }, Object {
        id = 101, dcName = "ASEAN", country = "ASEAN"
    }, Object {
        id = 2, dcName = "Brazil DC", countrycode = 631
    }, Object {
        id = 6, dcName = "Central Europe", countrycode = 668
    }, Object {
        id = 5, dcName = "China DC", countrycode = 672
    }
}

for (var i = 0; i < ListB.length; i++) {
    for (var j = 0; j < listA.length; j++) {
        if (listA[j][1] == ListB[i].dcName) {

        } else {

            htmlStr += dcList[i].dcName;

        }
    }
}

输出应该是

  

中国区   新加坡IMT
  阿根廷DC
  东盟
  巴西DC

依旧......

但是现在输出的是, 所有DC的重复; s两次。 如何在script.pls帮助中循环它

2 个答案:

答案 0 :(得分:0)

我会使用underscore.js(http://underscorejs.org)来提供_.uniq函数(删除数组的重复项)以及其他一些方便的函数来解决问题。

可能你需要的是:

// get all the DC values
var allDC = [];
for (var key in ListB)
{
allDC.push(ListB[dcName]);
}
// remove duplicates
allDC = _.uniq(allDC);
// remove the values from the first list
for (key in ListA)
{
ListA[key] = _.filter(ListA[key], function(object){ return _.indexOf(object,allDC) === -1; });
}

答案 1 :(得分:0)

使用数组推送所有数据并检查其.indexOf

var data = [];
for (var i = 0; i < ListB.length; i++) {
    if (data.indexOf(ListB[i].dcName) == -1){
        data.push(ListB[i].dcName);
    }
}

for (var j = 0; j < ListA.length; j++) {
    if (data.indexOf(ListA[j][1]) == -1){
        data.push(ListA[j][2]);
    }
}

alert(data);

你也应该用这种方式定义你的多阵列(ListA):

var ListA = [[25151, "China DC", "Mar 14, 2014"], [8171, "Singapore IMT", "Mar 14, 2014"]];

还有你的JSON格式(ListB):

var ListB = 
   [{
     id: 3, dcName: "Argentina DC", countrycode : 613
    }, 
    {
        id : 101, dcName : "ASEAN", countrycode : 123
    },  
    {
        id : 2, dcName : "Brazil DC", countrycode : 631
    }, 
    {
        id : 6, dcName : "Central Europe", countrycode : 668
    }, 
    {
        id : 5, dcName : "China DC", countrycode : 672
    }];

在这里查看demo