解构es6中的对象数组
Destructuring array of objects in es6
在 es6 中,如何使用解构来简化以下行?:
const array0 = someArray[0].data;
const array1 = someArray[1].data;
const array2 = someArray[2].data;
是否使用解构实际上是一种简化尚有争议,但这是可以做到的:
const [
{ data: array0 },
{ data: array1 },
{ data: array2 }
] = someArray
实例:
const someArray = [
{ data: 1 },
{ data: 2 },
{ data: 3 }
];
const [
{ data: array0 },
{ data: array1 },
{ data: array2 }
] = someArray
console.log(array0, array1, array2);
发生的事情是,您首先从 someArray
中提取每个对象,然后通过提取 data
属性 并重命名来解构每个对象:
// these 2 destructuring steps
const [ obj1, obj2, obj3 ] = someArray // step 1
const { data: array0 } = obj1 // step 2
const { data: array1 } = obj2 // step 2
const { data: array2 } = obj3 // step 2
// written together give
const [
{ data: array0 },
{ data: array1 },
{ data: array2 }
] = someArray
也许将解构与映射结合起来以获得(可能)更具可读性的代码:
const [array0, array1, array2] = someArray.map(item => item.data)
实例:
const someArray = [
{ data: 1 },
{ data: 2 },
{ data: 3 }
];
const [array0, array1, array2] = someArray.map(item => item.data)
console.log(array0, array1, array2);
我相信你真正想要的是
const array = someArray.map(x => x.data)
如果你真的想要三个变量(提示:你不应该),你可以将 map
ping 与解构相结合:
const [array0, array1, array2] = someArray.map(x => x.data)
如果您想使用这个纯 JS,请遵循此代码段。它会帮助你。
let myArray = [
{
"_id": "1",
"subdata": [
{
"subid": "11",
"name": "A"
},
{
"subid": "12",
"name": "B"
}
]
},
{
"_id": "2",
"subdata": [
{
"subid": "12",
"name": "B"
},
{
"subid": "33",
"name": "E"
}
]
}
]
const array = myArray.map(x => x.subdata).flat(1)
const isExist = (key,value, a) => {
return a.find(item => item[key] == value)
}
let a = array.reduce((acc, curr) => {
if(!isExist('subid', curr.subid, acc)) {
acc.push(curr)
}
return acc
}, [])
console.log(a)
const myInfo = someArray.map((item) => {
const {itemval1, itemval2} = item;
return(
//return data how you want it eg:
<p>{itemval1}</p>
<p>{itemval2}</p>)
})
这就是我在反应中的做法,如果我错了请纠正我,我对这个世界还是陌生的
在 es6 中,如何使用解构来简化以下行?:
const array0 = someArray[0].data;
const array1 = someArray[1].data;
const array2 = someArray[2].data;
是否使用解构实际上是一种简化尚有争议,但这是可以做到的:
const [
{ data: array0 },
{ data: array1 },
{ data: array2 }
] = someArray
实例:
const someArray = [
{ data: 1 },
{ data: 2 },
{ data: 3 }
];
const [
{ data: array0 },
{ data: array1 },
{ data: array2 }
] = someArray
console.log(array0, array1, array2);
发生的事情是,您首先从 someArray
中提取每个对象,然后通过提取 data
属性 并重命名来解构每个对象:
// these 2 destructuring steps
const [ obj1, obj2, obj3 ] = someArray // step 1
const { data: array0 } = obj1 // step 2
const { data: array1 } = obj2 // step 2
const { data: array2 } = obj3 // step 2
// written together give
const [
{ data: array0 },
{ data: array1 },
{ data: array2 }
] = someArray
也许将解构与映射结合起来以获得(可能)更具可读性的代码:
const [array0, array1, array2] = someArray.map(item => item.data)
实例:
const someArray = [
{ data: 1 },
{ data: 2 },
{ data: 3 }
];
const [array0, array1, array2] = someArray.map(item => item.data)
console.log(array0, array1, array2);
我相信你真正想要的是
const array = someArray.map(x => x.data)
如果你真的想要三个变量(提示:你不应该),你可以将 map
ping 与解构相结合:
const [array0, array1, array2] = someArray.map(x => x.data)
如果您想使用这个纯 JS,请遵循此代码段。它会帮助你。
let myArray = [
{
"_id": "1",
"subdata": [
{
"subid": "11",
"name": "A"
},
{
"subid": "12",
"name": "B"
}
]
},
{
"_id": "2",
"subdata": [
{
"subid": "12",
"name": "B"
},
{
"subid": "33",
"name": "E"
}
]
}
]
const array = myArray.map(x => x.subdata).flat(1)
const isExist = (key,value, a) => {
return a.find(item => item[key] == value)
}
let a = array.reduce((acc, curr) => {
if(!isExist('subid', curr.subid, acc)) {
acc.push(curr)
}
return acc
}, [])
console.log(a)
const myInfo = someArray.map((item) => {
const {itemval1, itemval2} = item;
return(
//return data how you want it eg:
<p>{itemval1}</p>
<p>{itemval2}</p>)
})
这就是我在反应中的做法,如果我错了请纠正我,我对这个世界还是陌生的