javascript在数组中获取对象数组中的键的所有不同值

时间:2015-04-09 10:29:26

标签: javascript arrays json

我需要从给定的对象数组中获取给定键的所有不同值。例如:

 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']

什么是实现目标的简单方法?

5 个答案:

答案 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;
&#13;
&#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;
}

DEMO https://jsfiddle.net/mdzLr4q6/1/

答案 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"
}