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,
}
}),
};
})