【问题标题】:How to check if the id exists in the array of ids javascript如何检查id是否存在于ids javascript数组中
【发布时间】:2018-01-13 19:51:09
【问题描述】:

我有一个类似的对象:

item: {
    b: null
    c: "asd"
    i: 10
    q: 10
    s: Array [237,241]}

我还有一个 id 数组:

var ids = [237, 238, 239, 240, 242, 243...]

我不知道如何检查s中是否存在上述id,然后 将这些项目保存到新数组或对象中

        for (var key in items) {
            for (var i in items[key].s) {
        //...
            }
        }

【问题讨论】:

标签: javascript arrays


【解决方案1】:
 if(items.s.some(el => ids.includes(el))) alert("wohoo");

只需检查某些项目 id 是否包含在 ids 数组中。或者使用 for 循环:

for(var i = 0; i < items.s.length; i++){
 if( ids.includes( items.s[i] )){
  alert("wohoo");
 }
}

【讨论】:

    【解决方案2】:

    您可以使用Array.filterArray.indexOf。我假设你没有使用任何代码转译器,我推荐使用indexOf 而不是includes,因为它有更好的浏览器支持。

    var foundIds = item.s.filter(x => ids.indexOf(x) !== -1);
    // foundIds now contains the list of IDs that were matched in both `ids` and `item.s`
    

    var item = {
        b: null,
        c: "asd",
        i: 10,
        q: 10,
        s: [237,241]
    }
    var ids = [237, 238, 239, 240, 242, 243];
    
    var foundIds = item.s.filter(x => ids.indexOf(x) !== -1);
    console.log(foundIds);

    【讨论】:

    • 讽刺的是你不使用.includes(),因为它没有得到很好的支持,然后使用箭头函数。通过不使用.includes() 来获得的主要是IE 支持。 IE也不支持箭头函数。
    • @Makyen 箭头函数比 Array.includes 得到更好的支持。 Edge 不支持 Array.includes,而箭头函数支持。
    • 是的,箭头函数比.inlcudes() 得到更好的支持。但是,Array.prototype.includes() was supported in Edge as of version 14。因此,不使用.includes() 得到的主要好处是IE 支持,你也不能使用arrow functions
    • 我的意思是,arrow functions 来自 ES2015,.includes() 来自 ES2016。我不知道确切的浏览器支持,但我猜在移动设备上差异很大。另外,你是对的,在提到浏览器支持问题的同时使用箭头功能有点讽刺。
    【解决方案3】:
    ids.filter(id => items.s.includes(id))
    

    ids 的列表“过滤”到items.s“包括”的列表。

    【讨论】:

      【解决方案4】:

      var item = {
        b: null,
        c: "asd",
        i: 10,
        q: 10,
        s: [237,241]
      }
      var ids = [237, 238, 239, 240, 242, 243];
      // way number 1
      for(var i = 0; i < item.s.length; i++){
        if( ~ids.indexOf(item.s[i])){
          console.log(item.s[i]);
        }
      }
      //way number 2
      var myArr = item.s.filter(x => ~ids.indexOf(x));
      console.log(myArr);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多