Object.entries(obj) 返回给定对象自身可枚举属性的键值对数组
参数
可以返回其可枚举属性的键值对的对象
返回值
返回一个数组,其元素是数组(与直接在 参数obj 上找到的可枚举属性键值对相对应的 数组)
举例
getMacAdress.ts 获取Mac地址
import { networkInterfaces } from 'os';
const zeroRegex = /(?:[0]{1,2}[:-]){5}[0]{1,2}/;
export function getMacAdress() {
const list = networkInterfaces();
console.log('list:',list)
/*
{
Loopback Pseudo-Interface 1: [
{
address: '::1',
netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
family: 'IPv6',
mac: '00:00:00:00:00:00',
internal: true,
cidr: '::1/128',
scopeid: 0
},
{
address: '127.0.0.1',
netmask: '255.0.0.0',
family: 'IPv4',
mac: '00:00:00:00:00:00',
internal: true,
cidr: '127.0.0.1/8'
}
],
WLAN: [
{
address: 'fe80::f433:2bc5:16f8:7414',
netmask: 'ffff:ffff:ffff:ffff::',
family: 'IPv6',
mac: 'cc:6b:1e:97:11:55',
internal: false,
cidr: 'fe80::f433:2bc5:16f8:7414/64',
scopeid: 19
},
{
address: '192.168.1.105',
netmask: '255.255.255.0',
family: 'IPv4',
mac: 'cc:6b:1e:97:11:55',
internal: false,
cidr: '192.168.1.105/24'
}
]
}
*/
console.log('Object.entries(list):',Object.entries(list))
/*
[
[ 'WLAN', [ [Object], [Object] ] ],
[ 'Loopback Pseudo-Interface 1', [ [Object], [Object] ] ]
]
即:
[
[ 'WLAN', [
[{
address: 'fe80::f433:2bc5:16f8:7414',
...
scopeid: 19
}],
[{
address: '192.168.1.105',
...
cidr: '192.168.1.105/24'
}]
]
],
[ 'Loopback Pseudo-Interface 1', [
[{
address: '::1',
...
scopeid: 0
}],
[{
address: '127.0.0.1',
...
cidr: '127.0.0.1/8'
}]
]
]
]
*/
for (const [_key, parts] of Object.entries(list)) {
if (!parts) continue;
console.log(`_key: ${_key} parts: ${parts}`)
for (const part of parts) {
console.log('part:', part)
if (zeroRegex.test(part.mac) === false) {
console.log(part.mac);
return part.mac;
}
}
}
/*第一次循环:
_key: WLAN parts: [object Object],[object Object]
part: {
address: 'fe80::f433:2bc5:16f8:7414',
...
scopeid: 19
}
part.mac: cc:6b:1e:97:11:55
part: {
address: '192.168.1.105',
...
cidr: '192.168.1.105/24'
}
part.mac: cc:6b:1e:97:11:55
*/
/*第二次循环:
_key: Loopback Pseudo-Interface 1 parts: [object Object],[object Object]
part: {
address: '::1',
...
scopeid: 0
}
part: {
address: '127.0.0.1',
...
cidr: '127.0.0.1/8'
}
*/
return '';
}