簡體   English   中英

將對象數組轉換為鍵值對的 object

[英]Convert array of objects to object of key-value pairs

這可能是 2 班輪,但由於某種原因,我碰壁了。

我想將對象數組轉換為鍵值對的 object。

所以這:

var items = [
    {
      name: 'hello',
      value: ['one', 'two']
    },
    {
      name: 'hi',
      value: ['one', 'two', 'three']
    }
]

對此:

var items = {
    'hello': ['one', 'two'],
    'hi': ['one', 'two', 'three']
}

這真的是最優雅的方式嗎?

const newObj = {};
items.forEach((item) => {
  newObj[item.name] = item.value;
});

我想最好使用 ES6 箭頭函數。 另外,有人可以告訴我您是否認為以第一種格式或第二種格式操作這些數據更容易? 對於上下文,我正在嘗試自學拓撲排序。

更簡潔的方法是使用Object.fromEntries

 var items = [ { name: 'hello', value: ['one', 'two'] }, { name: 'hi', value: ['one', 'two', 'three'] } ]; const newObj = Object.fromEntries( items.map(({ name, value }) => [name, value]) ); console.log(newObj);

我會用Array.prototype.reduce()來做到這一點,它比Object.fromEntries()更簡潔,當然也更快

 const items = [{name:'hello',value:['one','two']},{name:'hi',value:['one','two','three']}], result = items.reduce((r,{name,value}) => (r[name]=value,r), {}) console.log(result)
 .as-console-wrapper{min-height:100%;}

我不知道這是否更優雅,但我認為reduce在這里有意義。

 var items = [ { name: 'hello', value: ['one', 'two'] }, { name: 'hi', value: ['one', 'two', 'three'] } ]; const newObj = items.reduce((c, {value, name}) => { c[name] = value; return c; }, {}); console.log(newObj);

只需映射每個數組元素:

使用 map() 方法:

const newObj = {};
items.map( ( { name, value } ) => {
    newObj[name] = value;
});

編輯:

使用 forEach() 方法:

const newObj =
((obj) => {
    items.forEach(({ name, value }) => { obj [name] = value });
    return obj;
 })({});

JavaScript:.forEach() 和.map() 之間的區別

使用Object.valuesObject.fromEntries簡化為一行

Object.fromEntries(items.map(item => Object.values(item)))

 var items = [ { name: "hello", value: ["one", "two"] }, { name: "hi", value: ["one", "two", "three"] } ]; const res = Object.fromEntries(items.map(item => Object.values(item))); console.log(res);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM