【问题标题】:JavaScript findIndex not working for first objectJavaScript findIndex 不适用于第一个对象
【发布时间】:2019-11-01 17:38:40
【问题描述】:
var data=[{"vpnkey":"CUSTOMER_NAME","validation":"ALPHANUMERIC"},
{"vpnkey":"VRF","validation":"VRF_CHECK"},
{"vpnkey":"MOBILE_ADDRESS_SUMMARIZED_RANGE","validation":"IP_MASK"},
{"vpnkey":"APN_MOBILE_RANGE","validation":"IP_MASK"},
{"vpnkey":"FIXED_IP_LOOPBACK_TRACK_ID","validation":"NUMERIC"},
{"vpnkey":"CUSTOMER_BGP_REMOTE_AS","validation":"NUMERIC"},
{"vpnkey":"testing_purpass1","validation":"IP_ADDRESS"},
{"vpnkey":"testing_purpass2","validation":"IP_ADDRESS"}]

当我使用第一个对象“vpnkey value”搜索 vpnkey 时,它返回 -1 但预期结果为 0

this.vpnKeys["Commonkeys"].findIndex(function(item, i){
   if(item.vpnkey === "CUSTOMER_NAME") return i
});

当我基于 vpnkey 搜索而不是第一个对象“vpnkey value”时,它会给出正确的索引值

this.vpnKeys["Commonkeys"].findIndex(function(item, i){
   if(item.vpnkey === "VRF") return i
});

【问题讨论】:

    标签: javascript arrays indexing find


    【解决方案1】:

    findIndex 将返回数组中满足条件的第一个元素的索引。所以不用返回i 你可以return item.vpnkey === "CUSTOMER_NAME"

    var data = [{
      "vpnkey": "CUSTOMER_NAME",
      "validation": "ALPHANUMERIC"
    }, {
      "vpnkey": "VRF",
      "validation": "VRF_CHECK"
    }, {
      "vpnkey": "MOBILE_ADDRESS_SUMMARIZED_RANGE",
      "validation": "IP_MASK"
    }, {
      "vpnkey": "APN_MOBILE_RANGE",
      "validation": "IP_MASK"
    }, {
      "vpnkey": "FIXED_IP_LOOPBACK_TRACK_ID",
      "validation": "NUMERIC"
    }, {
      "vpnkey": "CUSTOMER_BGP_REMOTE_AS",
      "validation": "NUMERIC"
    }, {
      "vpnkey": "testing_purpass1",
      "validation": "IP_ADDRESS"
    }, {
      "vpnkey": "testing_purpass2",
      "validation": "IP_ADDRESS"
    }]
    
    
    
    const x = data.findIndex(function(item, i) {
      return item.vpnkey === "CUSTOMER_NAME"
    });
    console.log(x)

    【讨论】:

      【解决方案2】:

      findByIndex 方法返回给定数组中满足提供的测试函数(条件)的索引,这就是该方法的全部目的。

      关键是理解返回函数的值,即条件满足的索引,这里是一个小例子:

      var friendPets = ['Dog', 'Cat', 'Turtle'];
      
      var someFriend = friendPets.findIndex(function (pet) {
        return pet === 'Turtle';
      });
      
      var otherFriend = friendPets.findIndex(function (pet) {
        return pet === 'Trex';
      });
      
      console.log(someFriend); //2 since one friend has a turtle in the position 2 of the array
      console.log(otherFriend); // -1 since Trex is extinct (is not found in the array)

      所以认为Boolean evaluation 的条件可以是真或假。当它为真时,它会根据给定的条件找到和项目,如果不是(假)则返回-1。

      你可能会问你一个重要的问题,那么为什么回调函数中给出了其他选项。嗯,这些是附加信息的参数,特别是您使用的那个,i 提供 当前正在处理的元素在数组中的索引。

      您可以在MDN's docs 中找到有关此findIndex 方法的所有详细信息。这些文档值得一看,因为许多 JavaScript 标准内置方法的行为为 similar

      【讨论】:

        猜你喜欢
        • 2022-11-09
        • 2022-11-15
        • 1970-01-01
        • 1970-01-01
        • 2023-01-07
        • 2017-03-01
        • 2016-06-15
        • 1970-01-01
        • 2021-02-06
        相关资源
        最近更新 更多