JavaScript数组转对象实现、键值疑问及map报错求助
问题解答与代码修正
疑问1:JavaScript中同一键能否对应不同值?
当然可以。你要生成的是对象数组,数组里的每个对象都是独立的实例,它们的键名可以相同(比如都叫val),但各自对应的值可以完全不同——这些对象之间互不干扰,只是共享相同的键名而已。
疑问2:使用数组map方法时输出undefined的原因
你的代码有两个核心问题:
- 数组
map的回调里用了解构({element}),但原数组的元素是纯数字(比如1、2),不是包含element属性的对象,所以解构出来的element是undefined,导致生成的对象都是{val: undefined}。 - 函数
transformToObjects内部定义了obj变量,但没有返回这个变量,且你在函数外部调用console.log(obj),obj是函数内部的局部变量,外部根本访问不到,所以最终输出undefined。
修正后的代码
function transformToObjects(numberArray) { // 遍历数组元素,每个元素对应生成{val: 元素值}的对象,直接返回map结果 return numberArray.map(num => ({ val: num })); } // 调用函数并打印结果 console.log(transformToObjects([1, 2, 3])); // 输出 [{val: 1}, {val: 2}, {val: 3}]
如果偏好更直观的写法,也可以写成:
function transformToObjects(numberArray) { return numberArray.map(function(num) { return { val: num }; }); }
内容的提问来源于stack exchange,提问作者B DRUTHI
相关产品推荐
相关产品推荐

