使用JS将数组转换为JSON对象

4

请帮忙将数组转换为 JSON 对象

var array = [1, 2, 3, 4]; 
var arrayToString = JSON.stringify(Object.assign({}, array));
var stringToJsonObject = JSON.parse(arrayToString);
 
console.log(stringToJsonObject);

我尝试了这个并得到了:
{0: 1, 1: 2, 2: 3, 3: 4}

期望结果

{place0: 1, place1: 2, place2: 3, place3: 4}

3
那个“地方”的东西是从哪里来的?您得到的结果看起来像JavaScript对象,没有涉及JSON文本。 - Bergi
1
也许你可以在这里找到答案:https://dev59.com/2nE95IYBdhLWcg3wd9xK - lissettdm
"place"显然可以被视为一个常量关键字。 - EugenSunic
4个回答

12
你可以使用 .reduce 来实现此操作:

var array = [1, 2, 3, 4]; 

var res = array.reduce((acc,item,index) => {
  acc[`place${index}`] = item;
  return acc;
}, {});
 
console.log(res);


4

var array = [1, 2, 3, 4];
const jsonObj = {}
array.forEach((v,i) => jsonObj['place'+i] = v);
console.log(jsonObj)


0
你可以使用 Object.entries() 方法将数组元素转换为键值对序列,然后使用 map() 方法将键与字符串 "place" 连接起来,最后使用 Object.fromEntries() 方法将新的数组转换回对象。
中间没有必要使用 JSON。

var array = [1, 2, 3, 4]; 
var object = Object.fromEntries(Object.entries(array).map(([key, value]) => ['place' + key, value]));
console.log(object);


1
只是另一种做法。 - Barmar

0
使用 for of 循环并将其累加到对象中。

var array = [1, 2, 3, 4];
const result = {}
for (let item of array) {
  result['place' + item] = item;
}
console.log(result)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接