Javascript array.map-react.js后的未定义值
我的函数有问题,它没有返回值,使它未定义,但它仍然找到了正确的值,但它“丢失了”。 我要做的是通过嵌套的数组查找我想通过parentId添加的元素的父元素Javascript array.map-react.js后的未定义值,javascript,arrays,reactjs,function,Javascript,Arrays,Reactjs,Function,我的函数有问题,它没有返回值,使它未定义,但它仍然找到了正确的值,但它“丢失了”。 我要做的是通过嵌套的数组查找我想通过parentId添加的元素的父元素 const data = [ { id: '1', parentId: null, title: 'Hi'}, [ { id: '2', parentId: '1', title: 'Hello'}, { id: '3', parentId: '2', title: 'Morning'}
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'}的一部分
提前感谢。您可以创建一个查找父级的同步函数,然后创建另一个调用它并返回承诺的函数 示例
const数据=[
{id:“1”,parentId:null,title:“Hi”},
[
{id:“2”,parentId:“1”,title:“Hello”},
{id:“3”,parentId:“2”,title:“Morning”},
[
{id:“5”,parentId:“2”,title:“再见”},
{id:“6”,parentId:“3”,title:“嘿”}
]
]
];
常量值=数据[1][2][1];
函数findParentInner(值、数据){
for(设i=0;i{
const parent=findParentInner(值、数据);
如果(家长){
决心(父母);
}否则{
拒绝(“未找到母公司”);
}
});
}
console.log(值);
findParent(值、数据),然后(console.log)
为什么要为这个同步操作使用承诺?@Tholle我需要它来启动另一个函数,但如果我不使用它,它就没有帮助了。我是否正确理解您传入了一个与id
对应的值,并且您想返回具有该id
的对象的父对象?@Tholle是,我传递的值类似于{id:'2',parentId:'1',title:'Hello'},我想从您发布的代码中找到这个对象的父对象,您不需要承诺。如果您确实因为某种原因需要承诺,那么您使用的承诺是错误的(从promise executor中的映射回调内部返回承诺是没有意义的)Array.prototype.map
不打算产生副作用。您可以做的是首先调整数组(或将其转换为映射),然后按id查找项目。