【发布时间】:2022-01-04 13:29:34
【问题描述】:
我看到了这两个问题:
但它们对我不起作用。
所以我有一个这样的嵌套动态数组:
const data = [
{
id: 1,
subData: [
{
id: 2,
subData: []
},
{
id: 3,
subData: [
{
id: 4,
subData: []
}
]
}
]
},
{
id: 5,
subData: []
},
.
.
.
]
我必须用它们的"id" 移动嵌套元素。例如,我怎样才能编写一个函数来给我以下结果:
const data = [
{
id: 1,
subData: [
{
id: 2,
subData: []
},
{
id: 3,
subData: [] // object with id 4 was here
}
]
},
{
id: 5,
subData: []
},
{
id: 4, // now its here
subData: []
}
.
.
.
]
到目前为止,我尝试编写以下函数来首先找到具有特定 "id" 的元素,然后移动该对象:
const findObjById = (obj, key, value) => {
if (obj[key] === value) {
return obj;
}
const keys = Object.keys(obj);
for (let i = 0; i < keys.length; i++) {
const k = keys[i];
if (obj[k] && typeof obj[k] === 'object') {
const found = findObjById(obj[k], key, value);
if (found) {
return found;
}
}
}
}
用于查找特定对象。但我无法移动找到的对象
【问题讨论】:
-
而不是仅仅返回对象,你应该
splice()它离开它所在的数组,然后找到你想要移动它的数组和push()它。 -
@pilchard 这正是我想到的方法。但我真的做不到。你能用你的方法重写那个函数吗?
标签: javascript arrays object