【问题标题】:Javascript - Multidimensional array object to arrayJavascript - 多维数组对象到数组
【发布时间】:2018-08-09 20:09:42
【问题描述】:

我是 Node.js 的新手,我想从如下所示的对象访问一组特定的信息:

userData: [
  {
    value: false,
    id: 1,
    title: 'Hello World',
    date: '17 February 2018 - 06:27:51 PM',
    status: 'Processing'
  },
  {
    value: false,
    id: 2,
    title: 'Hello People',
    date: '17 February 2018 - 06:27:48 PM',
    status: 'Active'
  },
  {
    value: false,
    id: 3,
    title: 'Hello Canary',
    date: '17 February 2018 - 06:27:44 PM',
    status: 'Expired'
  }
]

现在我想返回一个只包含“title”的数组

例如:['Hello World', 'Hello people', 'Hello Canary']

我试过Object.values(obj)Object.keys(yourObject).map(key => yourObject[key]) 没有任何运气。谁能帮帮我?

更新:我正在使用 ES6,并希望优化我的代码以提高性能

【问题讨论】:

标签: javascript arrays node.js javascript-objects


【解决方案1】:

let titles = userData.map(x => x.title);

Array.prototype.map 与数组一起使用时。它返回一个数组,该数组由您传递给它的函数的返回值组成,该函数在数组的每个元素上调用。因此,上面的示例在用于包含 .title 属性的对象数组时,将返回一个新数组,其中包含原始数组中每个对象的标题。

【讨论】:

  • 您的回答部分正确,需要重新分配处理后的输出,这是我给您投反对票的原因。
  • 我厌倦了在函数中使用return userData.map(x => x.title)。这是相同的错误:TypeError: Cannot read property 'header' of undefined
【解决方案2】:

这是一个有效的 sn-p

var userData = [{
    value: false,
    id: 1,
    title: 'Hello World',
    date: '17 February 2018 - 06:27:51 PM',
    status: 'Processing'
  },
  {
    value: false,
    id: 2,
    title: 'Hello People',
    date: '17 February 2018 - 06:27:48 PM',
    status: 'Active'
  },
  {
    value: false,
    id: 3,
    title: 'Hello Canary',
    date: '17 February 2018 - 06:27:44 PM',
    status: 'Expired'
  }
]

// Solution to your problem
let titles = userData.map(function(obj) {
  return obj.title;
});

console.log(titles);

解释:

  1. Map 将在用户数据数组的每个对象上执行
  2. Map 方法接受一个函数,该函数返回我们在最终数组中想要的值,在本例中为“title”
  3. 所以在 Map 完成对整个列表的迭代之后,User Data 数组中每个对象的标题将被收集到标题变量中

【讨论】:

  • 谢谢您的解释
  • 我搞定了。我在财产中使用骆驼案。傻我:D
  • 很高兴听到这个消息。 :D
【解决方案3】:
Try this:
var userData =  [
        {
          value: false,
          id: 1,
          title: 'Hello World',
          date: '17 February 2018 - 06:27:51 PM',
          status: 'Processing'
        },
        {
          value: false,
          id: 2,
          title: 'Hello People',
          date: '17 February 2018 - 06:27:48 PM',
          status: 'Active'
        },
        {
          value: false,
          id: 3,
          title: 'Hello Canary',
          date: '17 February 2018 - 06:27:44 PM',
          status: 'Expired'
        }
      ];
      var newArray=[];
userData.forEach(function(entry) {
    newArray.push(entry.title);
});
alert(newArray);

【讨论】:

    猜你喜欢
    • 2012-10-07
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 2012-01-28
    相关资源
    最近更新 更多