如何将javascript对象数组转换为我想要的对象属性的字符串数组?

时间:2012-12-20 13:22:48

标签: javascript

  

可能重复:
  Accessing properties of an array of objects

给出:

[{
    'id':1,
    'name':'john'
},{
    'id':2,
    'name':'jane'
}........,{
    'id':2000,
    'name':'zack'
}]

获得最佳方式是什么:

['john', 'jane', ...... 'zack']

我是否必须循环并将item.name推送到另一个数组,或者是否有一个简单的函数来执行此操作?

4 个答案:

答案 0 :(得分:82)

如果你的对象数组是items,你可以这样做:

var items = [{
  id: 1,
  name: 'john'
}, {
  id: 2,
  name: 'jane'
}, {
  id: 2000,
  name: 'zack'
}];

var names = items.map(function(item) {
  return item['name'];
});

console.log(names);
console.log(items);

文档: map()

答案 1 :(得分:4)

在JavaScript数组上使用map()函数本机:

var yourArray = [ {
    'id':1,
    'name':'john'
},{
    'id':2,
    'name':'jane'
}........,{
    'id':2000,
    'name':'zack'
}];

var newArray = yourArray.map( function( el ){ 
                                return el.name; 
                               });

答案 2 :(得分:1)

您可以这样做只监视对象的自有属性:

var arr = [];

for (var key in p) {
    if (p.hasOwnProperty(key)) {
        arr.push(p[key]);
    }
}

答案 3 :(得分:0)

您可以使用此功能:

function createStringArray(arr, prop) {
   var result = [];
   for (var i = 0; i < arr.length; i += 1) {
      result.push(arr[i][prop]);
   }
   return result;
}

只需传递对象数组和所需的属性即可。 上面的脚本甚至可以在旧的EcmaScript实现中使用。