如何在 JavaScript 中将数组转换为对象?

问题描述 投票:0回答:4

您的任务是将缺少的逻辑添加到

transformToObjects()
将数字列表转换为 JavaScript 列表的函数 物体。

对于提供的输入

[1, 2, 3]
transformToObjects()
函数 应该返回
[{val: 1}, {val: 2}, {val: 3}]

JavaScript 中同一个键是否可以有不同的值?

我尝试使用数组的映射方法,但它给出的输出为未定义。

function transformToObjects(numberArray) {
   const obj = numberArray.map(({element}) => ({ ['val'] : element }));
}
console.log(obj);
javascript
4个回答
2
投票

好消息是您走在正确的道路上。

map
是数组方法的一个不错的选择,因为它具有 变革性 - 回调依次对每个元素进行操作,并返回一个与您正在处理的数组 长度相同的数组。

任务提到的一件事是

函数返回您当前没有执行的数组。

您不需要

解构元素(.map(({element}) =>

应该只是
.map(element =>
),并且您不需要将对象键放在方括号中 - 您正在考虑
计算的属性名称这里不需要。

最后,您需要以数组作为参数调用函数,并记录其返回值。

const arr = [1, 2, 3]; function transformToObjects(numberArray) { // Return the result of calling `map` on the array // (which is itself an array) return numberArray.map(element => { return { val: element }; }); } // Call the function with the array as an argument // and log its returned value console.log(transformToObjects(arr));


0
投票
在映射数组时,您不必解构任何内容,除非您的

element

 字段包含数字。另外,您需要返回映射。

由于您的输入数组仅包含数字,因此

Array.prototype.map

 调用中的第一个参数应该是数字本身。在下面的示例中,我将此值称为 
n

此外,您的

val

 键不必用括号/引号括起来,因为它是对象中的文字标识符。

const transformToObjects = (numberArray) => numberArray.map((n) => ({ val: n })); console.log(transformToObjects([1, 2, 3]));
.as-console-wrapper { top: 0; max-height: 100% !important; }


0
投票
对于您使用map函数的尝试,obj在您的函数范围之外未定义。另外,这不是使用 Array.map 的正确语法,请查看

此处的文档。您还说该函数应该返回新数组,但您的函数不返回任何内容。

这对你来说可能更有意义:

function transformToObjects(numberArray) { //Create a new array let newArray = [] //Loop for each element in the first array for (let index = 0; i < numberArray.length; index++) { //Create the new Object let obj = {'val': index} //Append it to the new array newArray.push(obj) } //Return the new array return newArray }
    

0
投票
function transformToObjects(numberArray) { return numberArray.map((item) => ({val : item})); }
最简单的解决方案

© www.soinside.com 2019 - 2024. All rights reserved.