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

javascript在数组中获取对象数组中键的所有不同值,javascript,arrays,json,Javascript,Arrays,Json,我需要从给定的对象数组中获取给定键的所有不同值。例如: var arr = [ { "cod": 0 "level": "INF" },{ "cod": 1 "level": "INF" },{ "cod": 2 "level": "INC" },{ "cod": 3 "level": "IND" } ]

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

 var arr =   [
      {
        "cod": 0
        "level": "INF"
      },{
        "cod": 1
        "level": "INF"
      },{
        "cod": 2
        "level": "INC"
      },{
        "cod": 3
        "level": "IND"
      }
]
不同的值(arr,'level')

应返回:

['INF','INC','IND']

实现这一点的简单方法是什么?

循环数组并从每个元素获取指定的属性。将它们用作对象中的关键帧以消除重复项,然后返回该对象的关键帧

var-arr=[
{
“cod”:0,
“级别”:“INF”
},{
“化学需氧量”:1,
“级别”:“INF”
},{
“化学需氧量”:2,
“级别”:“公司”
},{
“cod”:3,
“级别”:“IND”
}
];
函数不同的_值(数组、属性){
var值_seen={};//用于删除重复项
对于(var i=0;i警报(JSON.stringify(不同的_值(arr,'level'))在数组上循环并从每个元素获取指定的属性。将它们用作对象中的关键帧以消除重复项,然后返回该对象的关键帧

var-arr=[
{
“cod”:0,
“级别”:“INF”
},{
“化学需氧量”:1,
“级别”:“INF”
},{
“化学需氧量”:2,
“级别”:“公司”
},{
“cod”:3,
“级别”:“IND”
}
];
函数不同的_值(数组、属性){
var值_seen={};//用于删除重复项
对于(var i=0;i
函数不同的值(数组、键){
var count=array.length,
输出=[];
对于(变量i=0;i
函数不同的值(数组、键){
var count=array.length,
输出=[];
对于(变量i=0;i
试试这个:

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;
}
函数不同的_值(arr,键){
var-diff=[];
对于(变量i=0;i
试试这个:

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;
}
函数不同的_值(arr,键){
var-diff=[];
对于(变量i=0;i
只需在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"
}

只需在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"
}
演示


演示

是的,我喜欢这种重复数据消除方法。是的,我喜欢这种重复数据消除方法。您应该避免在阵列的
循环中使用
<代码>对于(变量i=0,l=arr.length;i
会更好。此外,您还可以缓存数组的长度。我为什么要避免它?您应该避免在数组的
循环中使用
for<代码>对于(变量i=0,l=arr.length;i
会更好。此外,您还可以缓存数组的长度。我为什么要避免它?您没有从输出数组中删除重复项,而这正是OP想要的。Oops没有注意到“不同”一词您没有从输出数组中删除重复项,而这正是OP想要的。Oops没有注意到“不同”一词