从对象数组获取值,无需循环遍历它

时间:2016-10-27 21:04:44

标签: javascript arrays object

我有一个像下面这样的对象数组,是否可以获取name属性的值而无需循环遍历它。

var objArray = [ { name: 'APPLE', type: 'FRUIT' },
                 { name: 'ONION', type: 'VEGETABLE' } ]

将名称的值作为CSV(APPLE,ONION)获取而不进行循环是可行的。从根本上说是一个辅助函数,它将此对象数组作为输入并输出给定​​属性的CSV,在这种情况下,它是名称。

3 个答案:

答案 0 :(得分:2)

查看 map()和/或 reduce()

var obj = {
    "APPLE": { name: 'APPLE', type: 'FRUIT' },
    "ONION": { name: 'ONION', type: 'VEGETABLE' }
};

如果您控制数据格式,并且有“lot”项要处理,那么有更有效的方法来构建事物。如果这不能通过性能测试,那么您可能会将数据存储为

Object.keys(obj).join()

然后测试以下的表现:

{{1}}

一旦将设置为名称,就可以确定是否使内部名称成为冗余,或者如果只有两个数据元素则根本需要内部对象。

答案 1 :(得分:0)

您可以创建自己的函数来执行此操作,但必须遍历数组,例如:

function namesCSV(arr){
    var toReturn = "";
    for(var i = 0; i < arr.length; i++){
         toReturn += arr[i].name;
         if(i != array.length-1){
             toReturn += ",";
         }
    }
    return toReturn;
}

答案 2 :(得分:0)

您可以使用内置的forEach函数来获取值:

&#13;
&#13;
var objArray = [ { name: 'APPLE', type: 'FRUIT' },
                 { name: 'ONION', type: 'VEGETABLE' } ]

objArray.forEach(function(obj) {
  // work with obj
  console.log(obj.name);
});
&#13;
&#13;
&#13;