繁体   English   中英

查询javascript对象数组中的唯一属性值的最佳方法是什么?

[英]Best way to query back unique attribute values in a javascript array of objects?

在以下示例数组中查找“foo”的所有可能值的最佳(或最快)方法是什么。

var table = [
    {foo: 0, bar:"htns", stuff:123},
    {foo: 2, bar:"snhn", stuff:156},
    {foo: 5, bar:"trltw", stuff:45},
    {foo: 5, bar:"lrctm", stuff:564},
    //few thousand lines later
    {foo: 2596, bar:"cns", stuff:321},
    {foo: 2597, bar:"gcrl", stuff:741}
];

循环遍历数组并将值放在哈希(对象)中。 它是一种O(n)算法。

var result = {};
for(var i=0; i<table.length; i++) {
    result[table[i].foo] = 1; //the value can be anything
}

//now read back the unique values
for (i in result) {
    if (result.hasOwnProperty(i)) { 
        console.log(i);
    }
}

这是Chetan的答案的类型安全版本:

var result = {};
for(var i = 0; i < table.length; ++i) {
    var value = table[i].foo;
    result[(typeof value) + ' ' + value] = value;
}

for(id in result) {
    if(result.hasOwnProperty(id)) { 
        console.log(result[id]);
    }
}

但是它仍然会破坏对象:只要toString()方法没有被覆盖,它们都共享字符串表示'[object Object]'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM