gpt4 book ai didi

javascript - 在javascript中转换数组

转载 作者:行者123 更新时间:2023-11-29 10:33:42 26 4
gpt4 key购买 nike

我是 javascript 的新手,正在努力寻找这个问题的答案。

我有一个包含网络接口(interface)和详细信息列表的对象。我猜这是一个对象数组?:

> console.log(net);
[ { Interface: 'wlan0:',
bytes: { Receive: '26087318', Transmit: '8475' },
packets: { Receive: '379665', Transmit: '52' },
errs: { Receive: '0', Transmit: '0' },
drop: { Receive: '0', Transmit: '0' },
fifo: { Receive: '0', Transmit: '0' },
frame: { Receive: '0' },
compressed: { Receive: '0', Transmit: '0' },
multicast: { Receive: '0' },
colls: { Transmit: '0' },
carrier: { Transmit: '0' } },
{ Interface: 'lo:',
bytes: { Receive: '228483', Transmit: '228483' },
packets: { Receive: '4046', Transmit: '4046' },
errs: { Receive: '0', Transmit: '0' },
drop: { Receive: '0', Transmit: '0' },
fifo: { Receive: '0', Transmit: '0' },
frame: { Receive: '0' },
compressed: { Receive: '0', Transmit: '0' },
multicast: { Receive: '0' },
colls: { Transmit: '0' },
carrier: { Transmit: '0' } },
{ Interface: 'mon0:',
bytes: { Receive: '285735889', Transmit: '0' },
packets: { Receive: '1753373', Transmit: '0' },
errs: { Receive: '0', Transmit: '0' },
drop: { Receive: '1765559', Transmit: '0' },
fifo: { Receive: '0', Transmit: '0' },
frame: { Receive: '0' },
compressed: { Receive: '0', Transmit: '0' },
multicast: { Receive: '0' },
colls: { Transmit: '0' },
carrier: { Transmit: '0' } },
{ Interface: 'eth0:',
bytes: { Receive: '6982603', Transmit: '22526425' },
packets: { Receive: '58906', Transmit: '384822' },
errs: { Receive: '0', Transmit: '0' },
drop: { Receive: '0', Transmit: '0' },
fifo: { Receive: '0', Transmit: '0' },
frame: { Receive: '0' },
compressed: { Receive: '0', Transmit: '0' },
multicast: { Receive: '0' },
colls: { Transmit: '0' },
carrier: { Transmit: '0' } } ]

我想转化成这样的结果:

> console.log(result);
{ lo: 'lo',
mon0: 'mon0',
eth0: 'eth0',
wlan0: 'wlan0' }

我在节点 REPL 控制台中尝试了一些东西,但我没有得到任何结果:

> var result = {};
undefined
> Object.keys(net).forEach(function(ifname) {
... result[ifname] = ifname;
... });
undefined
> result
{ '0': '0', '1': '1', '2': '2', '3': '3' }

另一个尝试:

> procfs.net(function(err,net){
... result = net.map(function(a) {return a.Interface;})
... });
undefined
> console.log(result);
[ 'wlan0:', 'lo:', 'mon0:', 'eth0:' ]
undefined

我可以单独引用所需的数据元素,只是努力将它们放在一起:

> net[0].Interface
'wlan0:'
> net[1].Interface
'lo:'
> net[2].Interface
'mon0:'
> net[3].Interface
'eth0:'

感谢帮助!

最佳答案

编辑:添加了删除尾随冒号的代码,以完全匹配请求的输出格式

就这样减少:

var result = net.reduce((ifaces,i) => { 
var name = i.Interface.replace(/:$/,'');
ifaces[name]=name;
return ifaces;
},{})

示例输出

>>result
{ wlan0: "wlan0", lo: "lo", mon0: "mon0", eth0: "eth0" }

或者,您可以使用 Lodash ( https://lodash.com/ ):

_.keyBy(net.map(i=>i.Interface.slice(0,-1)))

或其他一些实用程序库。

关于javascript - 在javascript中转换数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40561316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com