gpt4 book ai didi

javascript - array.map 后的未定义值 - react.js

转载 作者:行者123 更新时间:2023-11-29 23:19:28 25 4
gpt4 key购买 nike

我的函数有问题,它不返回值并使其未定义,但它仍然找到了正确的值,但它“丢失了”。我正在做的是通过深度嵌套数组并寻找我想通过 parentId 添加的元素的父元素。

    const data = [
{ id: '1', parentId: null, title: 'Hi'},
[
{ id: '2', parentId: '1', title: 'Hello'},
{ id: '3', parentId: '2', title: 'Morning'},
[
{ id: '5', parentId: '2', title: 'Bye'},
{ id: '6', parentId: '3', title: 'Hey'},
]
]
]

这是我用来查找父级的函数:

 findParent(value, data) {
return new Promise((resolve, reject) => {
let parent;
data.map(child => {
if (isArray(child)) {
return findParent(value, child);
} else {
if (child.id === value.parentId) {
return parent = child;
}
}
})

if (parent !== undefined) {
resolve(parent)
} else {
reject(Error('Parent is undefined'))
}
});
}

传递的值类似于数据的一部分 { id: '2', parentId: '1', title: 'Hello'} 例如。

提前致谢。

最佳答案

您可以创建一个找到父级的同步函数,然后另一个函数调用它并返回一个 promise 。

示例

const data = [
{ id: "1", parentId: null, title: "Hi" },
[
{ id: "2", parentId: "1", title: "Hello" },
{ id: "3", parentId: "2", title: "Morning" },
[
{ id: "5", parentId: "2", title: "Bye" },
{ id: "6", parentId: "3", title: "Hey" }
]
]
];

const value = data[1][2][1];

function findParentInner(value, data) {
for (let i = 0; i < data.length; i++) {
const d = data[i];

if (Array.isArray(d)) {
return findParentInner(value, d);
} else if (d.id === value.parentId) {
return d;
}
}

return null;
}

function findParent(value, data) {
return new Promise((resolve, reject) => {
const parent = findParentInner(value, data);

if (parent) {
resolve(parent);
} else {
reject("Parent was not found");
}
});
}

console.log(value);
findParent(value, data).then(console.log);

关于javascript - array.map 后的未定义值 - react.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51304544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com