Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript array.map-react.js后的未定义值_Javascript_Arrays_Reactjs_Function - Fatal编程技术网

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

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'}

我的函数有问题,它没有返回值,使它未定义,但它仍然找到了正确的值,但它“丢失了”。 我要做的是通过嵌套的数组查找我想通过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'}的一部分


提前感谢。

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

示例

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查找项目。