Javascript JSON获取值的索引

时间:2017-05-31 11:04:09

标签: javascript json

我有JSON格式:

{ device: 'eth0',
      Rx: { bytes: '491539402315', packets: '278178082' },
      Tx: { bytes: '15113860013', packets: '67405143' } }
{ device: 'lo',
      Rx: { bytes: '1653376107', packets: '6380792' },
      Tx: { bytes: '1653376107', packets: '6380792' } }

我需要获取设备值的索引,以便我以后可以提取字节和数据包...我在数据库值eth0中所以我需要得到索引0(如果我把我需要得到索引1)

在javascript中我该怎么做?

2 个答案:

答案 0 :(得分:2)

假设这是一个数组,你可以简单地迭代数组:



var devices = [{ device: 'eth0',
      Rx: { bytes: '491539402315', packets: '278178082' },
      Tx: { bytes: '15113860013', packets: '67405143' } },
{ device: 'lo',
      Rx: { bytes: '1653376107', packets: '6380792' },
      Tx: { bytes: '1653376107', packets: '6380792' } }]
      
 function getIndex (name) {
   for (var i = 0; i < devices.length; ++i) {
    if (devices[i].device === name) {
      return i;
    }
   }
   return -1;
 }
 
console.log(getIndex("eth0"));
console.log(getIndex("lo"));
console.log(getIndex("missing device"));
&#13;
&#13;
&#13;

另一种较慢的方法是使用mapindexOf函数:

var index = devices.map(c => c.device).indexOf(name);

或者,Jaimec建议的findIndex可能很有用。如果你真的关心性能,你可能想要使用for循环版本。在这种情况下,它可能并不重要。

var index = devices.findIndex(c => c.device === name);

答案 1 :(得分:1)

这是findIndex的工作!

&#13;
&#13;
var devices = [{ device: 'eth0',
      Rx: { bytes: '491539402315', packets: '278178082' },
      Tx: { bytes: '15113860013', packets: '67405143' } },
{ device: 'lo',
      Rx: { bytes: '1653376107', packets: '6380792' },
      Tx: { bytes: '1653376107', packets: '6380792' } }]
      
      
var idx = devices.findIndex(function(e) { return e.device == "eth0"} );
console.log(idx);
&#13;
&#13;
&#13;

请注意,IE不支持findIndex。如果您按照上面的链接有一个非常好的polyfill,可以添加对不支持的浏览器的支持。