简体   繁体   English

如何在 Javascript 中使用循环(forEach、map 等)将数组转换为对象

[英]How to convert array to object using loop (forEach, map, etc..) in Javascript

From

[
  {
    "id": "0001",
    "name": "Jack",
    "completeName": "Jack Smith"
  },
  {
    "id": "0002",
    "name": "Mary",
    "completeName": "Mary Jackson"
  },
  {
    "id": "0003",
    "name": "John",
    "completeName": "John Doe"
  }
]

to this:对此:

{
  "Jack" :{
    "id": "0001",
    "name": "Jack",
    "completeName": "Jack Smith"
  },
  "Mary" : {
    "id": "0002",
    "name": "Mary",
    "completeName": "Mary Jackson"
  },
  "John": {
    "id": "0003",
    "name": "John",
    "completeName": "John Doe"
  }
}

1. using forEach : 1. 使用 forEach :

 var data = [{ "id": "0001", "name": "Jack", "completeName": "Jack Smith" }, { "id": "0002", "name": "Mary", "completeName": "Mary Jackson" }, { "id": "0003", "name": "John", "completeName": "John Doe" } ]; var result = {}; data.forEach(function(val) { result[val["name"]] = val; }); console.log(result);

2. Using object.assign and map : 2. 使用object.assignmap

 var data = [{ "id": "0001", "name": "Jack", "completeName": "Jack Smith" }, { "id": "0002", "name": "Mary", "completeName": "Mary Jackson" }, { "id": "0003", "name": "John", "completeName": "John Doe" } ]; let dictionary = Object.assign({}, ...data.map((x) => ({ [x.name]: x }))); console.log(dictionary);

You can use .map() and Object.fromEntries() .您可以使用.map()Object.fromEntries()

 var data = [{ "id": "0001", "name": "Jack", "completeName": "Jack Smith" }, { "id": "0002", "name": "Mary", "completeName": "Mary Jackson" }, { "id": "0003", "name": "John", "completeName": "John Doe" } ]; var result = Object.fromEntries(data.map(el => [el.name, el])); console.log(result);

You can use an array reduce method.您可以使用数组reduce方法。 Array.prototype.reduce() Array.prototype.reduce()

 const test = [ { "id": "0001", "name": "Jack", "completeName": "Jack Smith" }, { "id": "0002", "name": "Mary", "completeName": "Mary Jackson" }, { "id": "0003", "name": "John", "completeName": "John Doe" } ]; const results = test.reduce((obj, props) => { obj[props.name] = props; return obj; } , {}); console.log(results);

You need to take your data, let's say it's stored in the data variable, and reduce() it with this one-liner:您需要获取您的数据,假设它存储在data变量中,并使用这个单行reduce()它:

const output = data.reduce((acc, row) => ({ ...acc, [row.name]: row }), {} );

 const data = [ { id: '0001', name: 'Jack', completeName: 'Jack Smith', }, { id: '0002', name: 'Mary', completeName: 'Mary Jackson', }, { id: '0003', name: 'John', completeName: 'John Doe', }, ]; const output = data.reduce((acc, row) => ({ ...acc, [row.name]: row }), {}); console.log(output);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 JavaScript:如何将数组forEach,映射,过滤器等转换为“ for”循环? - JavaScript: How can i transpile array forEach, map, filter and etc to 'for' loop? 如何使用 javascript 在数组 object 变量中使用 foreach 循环 - How to use foreach loop in an array object variable using javascript 我如何比较Array.find和foreach等迭代器? - How can i compare Array.find with iterators like for foreach etc..? 中断数组循环功能的循环(map,forEach等) - Break the loop of an Array looping function (map, forEach, etc.) JavaScript如何基于数组调用函数的函数等。 - JavaScript how to call a function's function etc.. based off an array? javascript数组方法(map,forEach,reduce等)的迭代顺序是否确定? - Is the order of iteration for javascript array methods (map, forEach, reduce, etc) deterministic? 如何使用javascript在<form>标签内附加<asp:Button />等.. - How to append <asp:Button /> etc.. within the <form> tag using javascript? 如何在仍加载JavaScript的情况下继续使用页面(点击,任务等) - how to be able to keep using a page(clickin,tasks etc..) while a javascript is still being loaded 如何使用 PHP / CURL / Javascript 等从 mca.gov.in 获取公司详细信息? - how to get company details from mca.gov.in using PHP / CURL / Javascript etc..? 如何将 Javascript foreach 循环与关联数组对象一起使用 - how to use Javascript foreach loop with associative array object
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM