如何在JavaScript中遍历二维数组并提取指定对象数组?
员工数组提取指定字段问题解决
问题背景
你有一个存储员工信息的二维数组,结构如下:
[ [ "14578", // 员工编号 "Marc", // 员工姓名 "Paris", // 所在城市 "ENGINEER", // 职位 "24578963", // 薪资 "A" // 所属团队 ], [ "81832", "Alan", "Marseille", "MECHANIC", "25578963", "C" ], [ "39629", "John", "Lyon", "PLUMBER", "26578963", "F" ] ]
需要提取每个子数组的第一个元素(员工编号)和第四个元素(职位),预期输出:
[{"employee number": "14578","employee position": "ENGINEER"}, {"employee number": "81832","employee position": "MECHANIC"}, {"employee number": "39629","employee position": "PLUMBER"}]
你尝试了以下map代码,但未得到预期结果:
const myExtractArray = myInitialArray.map( elt => { "employee number" : elt[0], "employee number":elt[3] return elt } );
问题出在哪
- 键名重复且错误:两次使用
"employee number"作为键,后面的elt[3]会覆盖前面的elt[0],且完全没用到employee position这个对应职位的正确键名。 - 返回值错误:
map回调里返回的是原数组元素elt,而非需要的新对象,等于没有完成映射转换。 - 箭头函数语法疏漏:当箭头函数用大括号包裹函数体时,需明确写
return,且对象字面量若直接作为返回值,需用小括号包裹避免被解析为代码块(你这里虽写了return,但返回内容错误)。
正确写法
写法1:简洁箭头函数返回对象
用小括号包裹对象字面量,直接返回新构建的目标对象:
const myExtractArray = myInitialArray.map(elt => ({ "employee number": elt[0], "employee position": elt[3] }));
写法2:明确返回新对象
若习惯用大括号,手动返回构建好的对象即可:
const myExtractArray = myInitialArray.map(elt => { return { "employee number": elt[0], "employee position": elt[3] }; });
两种写法都能生成符合预期的数组,核心是:给每个字段使用正确的唯一键名,在map回调中返回新构建的对象而非原数组元素。
内容的提问来源于stack exchange,提问作者peace3106
相关产品推荐
相关产品推荐

