使用javascript map()将值转换为对象

时间:2019-07-10 10:06:58

标签: javascript json object

对不起,它可能很琐碎,但我仍然找不到以下解决方案:

我有一个包含以下元素的对象:

 0: "A"
 1: "B"
 2: "C"

我想使用map()函数将其转换为如下形式:

0: {name: "A"}
1: {name: "B"}
2: {name: "C"}

如果我使用这个:

this.xxx = this.operations.map(obj =>  obj.name);
console.log(this.xxx);

或者这个:

this.xxx = this.operations.map(obj => {name:obj} );
 console.log(this.xxx);

xxx的元素未定义。

7 个答案:

答案 0 :(得分:1)

尝试使用Object.entries

let obj = {
  0: "A",
  1: "B",
  2: "C"
}

let result = Object.entries(obj).map(([,name]) => ({
  name
}));
console.log(result)

答案 1 :(得分:1)

将对象值映射到对象数组,然后使用Object.assign将其转换为对象

var obj = {
  0: "A",
  1: "B",
  2: "C",
};
console.log(Object.assign({},Object.values(obj).map(a => ({ name: a }))));

答案 2 :(得分:1)

如果我了解您想让他们反对的话?那就是你可以做的:

.

答案 3 :(得分:1)

由于对象类似于数组,因此可以通过这种方式添加length属性使其成为array like。然后,您可以使用Array.from将其转换为实数数组,并将转换函数作为第二个参数:

const input = {
  0: "A",
  1: "B",
  2: "C"
}

const result = Array.from(
  { ...input, length: Object.keys(input).length },
  item => ({ name: item })
)

console.log(result)

答案 4 :(得分:1)

首先,如果您有对象,则不确定如何整体使用map函数,因为它是数组原型函数。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map,但如果使用数组,则应尝试以下操作:

const operations = [ "A", "B", "C"]

const xxx = operations.map(obj => ({name:obj}) );

console.log(xxx)

您丢失了括号,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Advanced_syntax

但是如果它确实是一个对象,那么它应该起作用(不确定性能):

const operations = {
	0: "A",
 	1: "B",
 	2: "C",
} 

const xxx = {}
Object.entries(operations).forEach(entry => {
  xxx[entry[0]] = { name: entry[1] }
});

console.log(xxx)

答案 5 :(得分:1)

写作时

someArray.map(obj => {
    //this is a code block, not an object definition
} )

花括号括住一个代码块,而不是对象文字。

如果希望箭头函数返回对象,则JS要求您用括号将对象文字括起来,以便正确解析您的意图。

因此:

this.operations.map(obj => ({name:obj}) )

将修复您的映射。

答案 6 :(得分:0)

您不能使用.map()来生成对象,因为它总是返回一个数组。 最好的选择是获取对象中的条目,然后在其上使用.reduce(),如下所示:

const operations = {
  0: 'A',
  1: 'B',
  2: 'C',
}

const res = Object.entries(operations)
    .reduce((acc, [key, val], i) => { acc[i] = { [key]: val }; return acc },{})

console.log(res)