首页 > 解决方案 > 使用对象属性的对象数组

问题描述

对不起,如果这有点令人困惑,但我有这个数组:

[
      {
        name: 'id',
        type: 'string',
        primary: true
      },
      {
        name: 'notes',
        type: 'text',
        default: '[]'
      },
      {
        name: 'reminders',
        type: 'text',
        default: '[]'
      }
    ]

我怎么把它变成

{
  notes: '[]',
  reminders: '[]'
}

? 逻辑如下:任何具有default属性的索引,将新对象中的键设置为索引的name,并将值设置为索引的default

标签: javascriptarraysnode.jsobject

解决方案


你可以用 reduce

var array = [
      {
        name: 'id',
        type: 'string',
        primary: true
      },
      {
        name: 'notes',
        type: 'text',
        default: '[]'
      },
      {
        name: 'reminders',
        type: 'text',
        default: '[]'
      }
    ]

var result = array.reduce((prev, el) => {
   if (el.default) {
       prev[el.name] = el.default
   }
   return prev;
},{})

console.log(result);


推荐阅读