我需要从给定的对象数组中获取给定键的所有不同值。例如:
var arr = [
{
"cod": 0
"level": "INF"
},{
"cod": 1
"level": "INF"
},{
"cod": 2
"level": "INC"
},{
"cod": 3
"level": "IND"
}
]
different_values(arr,'level')
应该返回:
['INF','INC','IND']
什么是实现目标的简单方法?
答案 0 :(得分:5)
遍历数组并从每个元素获取指定的属性。使用它们作为对象中的键来删除重复项,然后返回该对象的键。
var arr = [
{
"cod": 0,
"level": "INF"
},{
"cod": 1,
"level": "INF"
},{
"cod": 2,
"level": "INC"
},{
"cod": 3,
"level": "IND"
}
];
function different_values(array, property) {
var values_seen = {}; // for removing duplicates
for (var i = 0; i < array.length; i++) {
values_seen[array[i][property]] = true;
}
return Object.keys(values_seen);
}
alert(JSON.stringify(different_values(arr, 'level')));
&#13;
答案 1 :(得分:2)
function different_values(arr, value){
var res = [];
for(var i=arr.length;i--;){
if(res.indexOf(arr[i][value]) === -1){
res.push(arr[i][value])
}
}
return res;
}
答案 2 :(得分:0)
试试这个:
function different_values(arr,key){
var diff=[];
for(var i = 0;i < arr.length;i++){
var k=arr[i][key];
if(diff.indexOf(k)===-1)diff.push(k);
}
return diff;
}
答案 3 :(得分:-1)
function different_values(array, key) {
var count = array.length,
output = [];
for (var i = 0; i < count; i++) {
output.push(array[i][key]);
}
return output;
}
答案 4 :(得分:-1)
只需循环遍历for循环中的对象,然后在结果数组中推送级别。
修改:添加了indexOf以获取唯一值
function different_values (arr, key) {
var result = [];
for (var i in arr) {
if (result.indexOf(arr[i][key]))
result.push(arr[i][key]);
}
return result;
}
确保纠正您的对象。您缺少元素之间的逗号:
{
"cod": 0
"level": "INF"
}
应该是:
{
"cod": 0,
"level": "INF"
}