作为对象内容的对象数组中的jQuery过滤器方法

时间:2017-08-10 16:00:33

标签: jquery

os.networkInterfaces()是node-webkit应用程序中用于获取客户端计算机的网络相关数据的函数。 对于我的机器来说就像 enter image description here

我编写了一个代码来获取要在我的nw.js应用中使用的客户端计算机的IPv4地址。逻辑是;从内部 false 系列 IPv4 的对象中找到地址。这是代码。

$.each(os.networkInterfaces(),function(key,value){
    $(value).each(function(index,item){
        if(item.internal==false && item.family=='IPv4'){
            console.log(item.address); // result is "10.0.8.42" from the above picture
        }
    });
});

还有其他方法可以实现这一目标。在这种情况下,我们可以在这里应用jquery过滤器方法吗?

1 个答案:

答案 0 :(得分:3)

不要使用jQuery - 只需使用常规的vanilla JS Array.reduce和Array.filter:

let interfaces = os.networkInterfaces()
let matchingObjects = Object.keys(interfaces).reduce(function(matches, key) {
    return matches.concat(interfaces[key].filter(function(face) {
        return face.internal === false && face.family === "IPv4"
    }).map(function(face) {
        return face.address; //just get the address
    }));
}, []);