如何从Javascript中的另一个数组值中过滤数组值?

时间:2017-05-06 10:14:11

标签: javascript arrays

我的演示应用程序中有两个数组。数组1具有内容的国家,另一个是列表国家。因此,如果该国家/地区未包含在国家/地区数组中,我希望从第一列中删除国家/地区。我把我的数组值放在下面,

var continent = [
    {
        "continent":"Europe",
        "country":["Albania", "Andorra", "UK", "Ireland"]
    },
    {
        "continent":"Asia",
        "country":["Armenia", "Cambodia", "China", "Cyprus"]
    }
]

var selectedCountries = ["Albania", "Andorra", "Armenia"];

输出

var result = [
    {
        "continent":"Europe",
        "country":["Albania", "Andorra"]
    },
    {
        "continent":"Asia",
        "country":["Armenia"]
    }
]

1 个答案:

答案 0 :(得分:0)

如果您正在修改原始数组,可以执行以下操作:

forEach and `filter` would do the job.
  1. 只需遍历continent数组。
  2. 对于包含country数组的每个对象,请保留selectedCountries集合中存在的对象。
  3. var continent = [
        {
            "continent":"Europe",
            "country":["Albania", "Andorra", "UK", "Ireland"]
        },
        {
            "continent":"Asia",
            "country":["Armenia", "Cambodia", "China", "Cyprus"]
        }
    ];
    
    var selectedCountries = ["Albania", "Andorra", "Armenia"];
    
    continent.forEach(function (c,i) {
      c.country = c.country.filter(function (v,i) {
        return selectedCountries.includes(v);
      });
    });
    console.log(continent);