您的任务是将缺少的逻辑添加到
将数字列表转换为 JavaScript 列表的函数 物体。transformToObjects()
对于提供的输入
[1, 2, 3]
函数 应该返回transformToObjects()
。[{val: 1}, {val: 2}, {val: 3}]
JavaScript 中同一个键是否可以有不同的值?
我尝试使用数组的映射方法,但它给出的输出为未定义。
function transformToObjects(numberArray) {
const obj = numberArray.map(({element}) => ({ ['val'] : element }));
}
console.log(obj);
好消息是您走在正确的道路上。
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));
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; }
此处的文档。您还说该函数应该返回新数组,但您的函数不返回任何内容。
这对你来说可能更有意义:
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
}
function transformToObjects(numberArray) {
return numberArray.map((item) => ({val : item}));
}
最简单的解决方案