我有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中我该怎么做?
答案 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;
另一种较慢的方法是使用map
和indexOf
函数:
var index = devices.map(c => c.device).indexOf(name);
或者,Jaimec建议的findIndex
可能很有用。如果你真的关心性能,你可能想要使用for循环版本。在这种情况下,它可能并不重要。
var index = devices.findIndex(c => c.device === name);
答案 1 :(得分:1)
这是findIndex
的工作!
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;
请注意,IE不支持findIndex
。如果您按照上面的链接有一个非常好的polyfill,可以添加对不支持的浏览器的支持。