假设有一个包含多个对象的数组,每个对象都有一个id属性。我们想要按照id选择对象,并生成包含关系的数组列。以下是一个解决方法的代码示例:
// 原始数组
const objects = [
{ id: 1, name: 'Object 1' },
{ id: 2, name: 'Object 2' },
{ id: 3, name: 'Object 3' },
{ id: 4, name: 'Object 4' },
{ id: 5, name: 'Object 5' }
];
// 选择特定的id并生成包含关系的数组列
const selectedIds = [2, 4];
const selectedObjects = objects.filter(obj => selectedIds.includes(obj.id));
const result = selectedObjects.map(obj => ({
...obj,
children: objects.filter(child => child.id !== obj.id && child.id.toString().startsWith(obj.id.toString()))
}));
console.log(result);
在上面的示例中,我们首先定义了一个原始数组objects
,其中包含了多个对象,每个对象都有一个id属性。然后,我们定义了一个selectedIds
数组,其中包含了我们想要选择的id。
接下来,我们使用filter
方法过滤原始数组,只保留那些id存在于selectedIds
数组中的对象,得到了selectedObjects
数组。
最后,我们使用map
方法遍历selectedObjects
数组,为每个对象生成一个新的对象,其中包含了一个名为children
的属性。children
属性的值是通过filter
方法过滤原始数组得到的,过滤条件是对象的id不等于当前对象的id,并且id以当前对象的id为前缀。
最终,我们打印出了生成的包含关系的数组列result
。