Javascript - 多维数组对象到数组

问题描述 投票:0回答:3

我是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
3个回答
4
投票

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

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


1
投票

这是一个工作片段

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将在User Data数组的每个对象上执行
  2. Map方法接受一个函数,该函数返回我们在最终数组中想要的值,在本例中为'title'
  3. 因此,在迭代完整列表完成Map之后,将在titles变量中收集User Data数组中每个对象的标题

0
投票
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);
© www.soinside.com 2019 - 2024. All rights reserved.