有一个数组[{ id: 1, name: '张三' }, { id: 2, name: '李四' }, { id: 3, name: '王五' }, { id: 4, name: '李里' }] 根据id 转成结构为{{key:1,{ id: 1, name: '张三' }}}的map
时间: 2024-04-14 21:29:13 浏览: 19
要将给定的数组按照 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 的对象。
希望这个示例代码能帮到你!
相关问题
js 数组[12] el-tree[{name:'张三',id:2,child:[{name:'李四',id:12}]}],根据数组中的数据查出el-tree中的节点
您可以使用递归的方式查找 `el-tree` 中的节点,例如:
```javascript
const treeData = [
{
name: '张三',
id: 2,
child: [
{
name: '李四',
id: 12
}
]
}
];
function findNodeById(id, nodes) {
for (const node of nodes) {
if (node.id === id) {
return node;
}
if (Array.isArray(node.child)) {
const result = findNodeById(id, node.child);
if (result) {
return result;
}
}
}
return null;
}
const id = 12;
const node = findNodeById(id, treeData);
console.log(node);
```
在上述代码中,我们定义了一个 `findNodeById` 函数,它接受一个 `id` 参数和一个 `nodes` 数组参数,用于查找 `id` 对应的节点。函数内部先遍历 `nodes` 数组中的每一个节点,如果当前节点的 `id` 属性等于传入的 `id` 参数,就返回当前节点。如果当前节点的 `child` 属性是数组,就递归调用 `findNodeById` 函数查找子节点中的匹配节点。如果在所有节点中都没有找到匹配的节点,就返回 `null`。最后,我们调用 `findNodeById` 函数查找 `id` 为 `12` 的节点,并将结果输出到控制台上。
创建一个class里面有name,id,sex
好的,我可以回答这个问题。您可以创建一个包含name,id和sex属性的class,如下所示:
class Person:
def __init__(self, name, id, sex):
self.name = name
self.id = id
self.sex = sex
这个class包含了三个属性,分别是name,id和sex,它们都是由构造函数__init__初始化的。您可以通过创建一个Person对象并传递相应的参数来实例化这个class,例如:
person1 = Person("张三", "001", "男")
person2 = Person("李四", "002", "女")
这样,您就可以创建两个不同的Person对象,它们分别具有不同的name,id和sex属性。