Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.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 如何在映射和检查条件后将新对象添加到数组中_Javascript - Fatal编程技术网

Javascript 如何在映射和检查条件后将新对象添加到数组中

Javascript 如何在映射和检查条件后将新对象添加到数组中,javascript,Javascript,如果存在值,如何添加新对象 const data = [ { id: '30', mom: 'A', code: '0141', 'child':' Not used', 'status' :' X' }, { id: '31', mom: 'B', code: '0141', 'child':' add Child', 'status' :' Y' } { id: '32', mom: 'B', code: '0141', 'chil

如果存在值,如何添加新对象

const data = [
          { id: '30', mom: 'A', code: '0141', 'child':' Not used', 'status' :' X' },
          { id: '31', mom: 'B', code: '0141', 'child':' add Child', 'status' :' Y' }
          { id: '32', mom: 'B', code: '0141', 'child':' add child 2', 'status' :' Y' }
        ]
首先,我映射数据,如果status=X,我推送新数组,如果不是,我想向status=X的数组中添加新的对象键调用child

 data.map((element, i) => {
  if (element.status == 'X') {
      arr.push({
          id: element.id,
          mom: element.mom,
          code: element.code
      });
  } else {
      // I want to add element child into arr that has status = X
      arr.push({ child: element.child });
  }
})
我想要这样的输出

const arr = [
  { 
    id: '30', mom: 'A', code: '0141', 
    child: [
      'name':'add child',
      'name':'add child2'
    ]
  },
]
请注意数组空格

根据您的数组:“状态”:“X”

但是您的“if结构”看起来是“status”:“X”

你可以使用我的数组。检查一下


不幸的是,您的代码和问题有点错误,难以理解。带键数组:值,状态用空格写入。所以如果理解正确,很抱歉

这就是我所理解的
  • 创建一个包含状态为
    X
    的所有元素的新数组,并通过键
    child
    将状态为
    Y
    的元素的所有子元素放入该数组中

    const数据=[
    {id:'30',mom:'A',code:'0141',child:'Not used',status:'X'},
    {id:'31',mom:'B',code:'0141',child:'addchild',status:'Y'},
    {id:'32',mom:'B',code:'0141',child:'addchild2',status:'Y'}
    ];
    让objectX=data.filter(val=>val.status==“X”);
    objectX[“child”]=data.filter(val=>val.status==“Y”).map(c=>c.child);
    /*
    [
    {id:'30',mom:'A',code:'0141',child:'Not used',status:'X'},
    子项:['添加子项','添加子项2']
    ]
    */
    console.log(objectX);
    
const数据=[
{id:'30',mom:'A',code:'0141','child':'notused','status':'X'},
{id:'31',mom:'B',code:'0141','child':'addchild','status':'Y'},
{id:'32',mom:'B',code:'0141','child':'addchild2','status':'Y'}
]
常数arr=[]
data.map((元素,i)=>{
如果(element.status='X'){
arr.push({
id:element.id,
妈妈:元素,妈妈,
代码:element.code
});
}
否则{
如果(!arr[0].child)arr[0].child=[]
arr[0].child.push({'name':element.child});
}
})

console.log(arr)
不要混合变异和转换。使用
数组。将
从编程语言中挤出,您的生活将变得更加轻松

此代码生成您想要的内容。它不会处理比你展示的案子更多的事情,但那是你要求的

您的代码中有语法错误,这使得执行此操作比需要的更困难。确保您的代码运行并正确格式化。这将解决您作为专业开发人员遇到的35%的问题

const数据=[
{id:'30',mom:'A',code:'0141','child':'notused','status':'X'},
{id:'31',mom:'B',code:'0141','child':'addchild','status':'Y'},
{id:'32',mom:'B',code:'0141','child':'addchild2','status':'Y'}
]
const parents=data.filter(e=>e.child==‘未使用’)
const children=data.filter(c=>c.child!==‘未使用’)
.map(c=>({name:c.child}))
const output=parents.map(p=>({…p,child:children}))

console.log(输出)
用于任何
X
状态

data.map({child,…element})=>{
如果(element.status=='X'){
arr.push({…元素,子元素:[]});
}否则{
const temp=arr.find((项目)=>item.status==='X');
如果(临时){
临时子推送(元件)
}
}
});
IMHO,可读性更强)


仅检查“X”?您的输出无效。您已将键值添加到数组中,请向child提供有效的out put。此返回包含两个元素的数组。最初的需求是“一个具有一个对象元素的数组,其中子数组是该对象上的一个键”。只需做一点小改动,就可以用这段代码实现这一点。
const data = [
          { id: '30', mom: 'A', code: '0141', 'child':' Not used', 'status' : 'X' },
          { id: '31', mom: 'B', code: '0141', 'child':' add Child', 'status' :'Y' },
          { id: '32', mom: 'B', code: '0141', 'child':' add child 2', 'status' : 'Y' }
        ]
data.filter((item) => item.status === 'X').map((item) => {
    return item = {
        ...item,
        child: data.filter((item) => item.status !== 'X').map((item) => item.child).map((item) => {
            return {
                ['name'] : item,
            }
        }),
    };
})