有一个数组[{ id: 1, name: '张三' }, { id: 2, name: '李四' }, { id: 3, name: '王五' }, { id: 4, name: '李里' }] 根据id 转成结构为{{key:1,{ id: 1, name: '张三' }}}的map
时间: 2024-04-14 17:29:13 浏览: 126
要将给定的数组按照 id 转换为一个以 id 作为 key 的对象,你可以使用 `Array.prototype.reduce()` 方法。下面是一个示例代码:
```javascript
const array = [
{ id: 1, name: '张三' },
{ id: 2, name: '李四' },
{ id: 3, name: '王五' },
{ id: 4, name: '李里' }
];
const map = array.reduce((acc, obj) => {
acc[obj.id] = obj;
return acc;
}, {});
console.log(map);
```
在上面的代码中,我们使用 `reduce()` 方法遍历数组,并将每个对象的 id 作为 key,对象本身作为 value,逐步构建一个新的对象 `map`。初始值 `{}` 是累加器的初始状态。最后,我们在控制台中打印出转换后的 map 对象。
现在,你可以通过访问 `map` 对象来获取特定 id 的对象,例如 `map[1]` 将返回 `{ id: 1, name: '张三' }`。请注意,由于 JavaScript 中对象的属性访问方式是通过方括号或点号表示,因此你可以使用 `map[id]` 或 `map.id` 来访问特定 id 的对象。
希望这个示例代码能帮到你!
相关问题
两个数组,最终输出:['员工张三,29岁,工作于百度', '员工李四,26岁,工作于阿里巴巴',...] var employees = [ { name: "张三", // 员工名字 empId: 0, // 员工id age: 29, // 员工年龄 compId: 1, // 所属公司id }, { name: "李四", empId: 1, age: 26, compId: 2, }, { name: "王五", empId: 2, age: 28, compId: 1, }, { name: "小明", empId: 3, age: 32, compId: 3, }, ]; var companies = [ { name: "百度", // 公司名称 id: 1, // 公司id }, { name: "阿里巴巴", id: 2, }, { name: "腾讯", id: 3, }, ];
你可以使用 JavaScript 的数组方法来解决这个问题。首先,你需要遍历员工数组,并找到每个员工所属的公司名称。然后,将员工的信息拼接为字符串,并将其存储到一个新的数组中。下面是一种实现方式:
```javascript
var result = employees.map(function(employee) {
var company = companies.find(function(company) {
return company.id === employee.compId;
});
return '员工' + employee.name + ',' + employee.age + '岁,工作于' + company.name;
});
console.log(result);
```
这段代码使用 `map` 方法对员工数组进行遍历,并使用 `find` 方法查找与当前员工所属公司id匹配的公司对象。然后,将员工信息与公司名称拼接为字符串,并将其存储到新的数组中。最后,打印输出结果。
运行这段代码,你会得到以下输出:
```
[
"员工张三,29岁,工作于百度",
"员工李四,26岁,工作于阿里巴巴",
"员工王五,28岁,工作于百度",
"员工小明,32岁,工作于腾讯"
]
```
这样就实现了将员工信息与所属公司信息进行拼接的功能。
1. 两个数组, 最终输出:['员工张三,29岁,工作于百度', '员工李四,26岁,工作于阿里巴巴',...]*/ var employees = [{ name: "张三", // 员工名字 empId: 0, // 员工id age: 29, // 员工年龄 compId: 1, // 所属公司id }, { name: "李四", empId: 1, age: 26, compId: 2, }, { name: "王五", empId: 2, age: 28, compId: 1, }, { name: "小明", empId: 3, age: 32, compId: 3, }, ]; var companies = [{ name: "百度", // 公司名称 id: 1, // 公司id }, { name: "阿里巴巴", id: 2, }, { name: "腾讯", id: 3, }, ];
可以使用嵌套循环和条件判断来实现该功能。首先,遍历employees数组,对于每个员工对象,找到对应的公司对象。然后,使用字符串拼接的方式构建最终输出结果。
以下是实现该功能的JavaScript代码:
```javascript
var output = [];
for (var i = 0; i < employees.length; i++) {
var employee = employees[i];
var companyName = '';
for (var j = 0; j < companies.length; j++) {
if (companies[j].id === employee.compId) {
companyName = companies[j].name;
break;
}
}
var empInfo = '员工' + employee.name + ',' + employee.age + '岁,工作于' + companyName;
output.push(empInfo);
}
console.log(output);
```
运行以上代码,将输出:
```
[
"员工张三,29岁,工作于百度",
"员工李四,26岁,工作于阿里巴巴",
"员工王五,28岁,工作于百度",
"员工小明,32岁,工作于腾讯"
]
```
这样就得到了最终输出结果。每个员工的信息都包含了公司名称。
阅读全文