我有一个嵌套对象数组,如下所示:
const objArr = [{obj, obj, objIWant}, {obj, obj, objIWant}, {obj, obj, objIWant}]
有没有一种方法可以到达objIWant
而不必像这样循环两次:
ObjArr.map((obj)=> obj.map(({ objIWant }) => myFunc(objIWant)))
我希望可以利用解构,但是尝试使用[{ objIWant }] = objArr
之类的方法只会返回第一个objIWant
。我是否缺少有关允许这样做的解构语法的内容?非常感谢!
答案 0 :(得分:1)
否-唯一的方法是使用嵌套的map
调用。
ObjArr.map(obj => obj.map(({ objIWant }) => myFunc(objIWant));
如果可以的话,您可以更改myFunc
:
myFunc({ objIWant }) {...}
然后更改您的代码以执行此操作:
ObjArr.map(obj => obj.map(myFunc));
但是无法使用解构来完成您要问的事情。
答案 1 :(得分:0)
解构不会使其看起来更干净。这是解构所需属性的唯一方法。像现在一样使用map
函数是一种更干净的方法。
const objArr = [{obj:1, obj2:2, objIWant:3}, {obj:4, obj2:5, objIWant:6}, {obj:7, obj2:8, objIWant:9}];
const [{objIWant}, {objIWant:test2}, {objIWant:test3}] = objArr;
window.console.log(objIWant);
window.console.log(test2);
window.console.log(test3);
答案 2 :(得分:0)
不确定是否希望您的结构返回对象数组-或每个对象的值数组。但是解决方案是相同的-在原始数组上使用.map()返回所需的值(或对象)。
const objArr = [
{id: 1, name: 'first item', value: 1},
{id: 2, name: 'second item', value: 2},
{id: 3, name: 'third item', value: 3}
];
const objIWant = 'value';
const result = objArr.map(item => item[objIWant]);
console.log(result);
// expected output: Array ["1", "2", "3"]
如果它是嵌套对象,则同样处理-在原始数组上使用.map()构造所需对象的新数组。
const objArr = [
{"obj": {id: 1}, "obj": { id:1 } , "objIWant": { id:1 }},
{"obj": {id: 1}, "obj": { id:1 } , "objIWant": { id:2 }},
{"obj": {id: 1}, "obj": { id:1 } , "objIWant": { id:3 }}
];
const objIWant = 'objIWant';
const result = objArr.map(item => item[objIWant]);
console.log(result);
// expected output: Array [{"id": 1},{"id": 2},{"id": 3}]