【问题标题】:How do I convert a javascript object array to a string array of the object attribute I want? [duplicate]如何将 javascript 对象数组转换为我想要的对象属性的字符串数组? [复制]
【发布时间】:2012-12-20 13:22:47
【问题描述】:

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

给定:

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

什么是最好的获得方式:

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

我必须循环并将item.name 推送到另一个数组,还是有一个简单的函数可以做到这一点?

【问题讨论】:

  • 您确定需要将其转换为这样的数组吗?通常,进行这样的转换表明您可能以错误的方式解决潜在问题。退后一步并确保这里不是这种情况可能会很有用。
  • @shauna 我的问题是这个。我使用引导程序的预输入它只能访问第二种格式:它是一个字符串数组。我的 ajax 调用将返回第一种格式,因为我需要 ID。因为我可以去扩展boostrap的typeahead,而是这样做:将第二种格式发送到bootstrap。只需保留第一种格式,当用户选择一个选项时,检查第一个对象并根据需要使用 id。

标签: javascript


【解决方案1】:

如果你的对象数组是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()

【讨论】:

  • @bru.scopelliti map() 是原生 JavaScript 而不仅仅是 jQuery。
  • @bru.scopelliti - 我的回答与 jQuery 无关..
  • 那不是 jQuery。那只是现代的javascript。很酷吧?
  • @bru.scopelliti:我在那里没有看到任何 jQuery。
  • 你可以像这样使用更现代的语法:names = items.map((item) => item.name);
【解决方案2】:

在 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; 
                               });

【讨论】:

  • 我们怎样才能像这样映射 JSON 结构? var yourArray = [ { "options": [ { 'id':2, 'name':'Javascript' },{ 'id':2000, 'name':'Ruby' } ] }];
【解决方案3】:

您可以这样做以仅监视对象的自身属性:

var arr = [];

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

【讨论】:

    【解决方案4】:

    你可以使用这个功能:

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

    只需传递对象数组和您需要的属性。 上面的脚本甚至可以在旧的 EcmaScript 实现中工作。

    【讨论】:

      猜你喜欢
      • 2016-08-30
      • 2017-08-24
      • 2023-02-06
      • 1970-01-01
      • 1970-01-01
      • 2021-01-04
      • 1970-01-01
      • 2022-10-07
      • 2023-03-12
      相关资源
      最近更新 更多