js中[{id:1,name:['hh','bb'],age:['1','22']},{id:2,name:'dd',age:'33'}]怎么变成[{id:1,name:'hh',age:'1'},{id:1,name:'bb',age:'22'},{id:2,name:'dd',age:'33'}]
时间: 2023-08-06 13:15:50 浏览: 40
你可以使用JavaScript的reduce()方法和map()方法来实现这个需求。
首先使用reduce()方法将原始数组中的每个对象展开成新数组中的多个对象。reduce()方法接受一个回调函数作为参数,该回调函数被用来迭代数组中的每个元素并返回一个累加值。
在回调函数中,我们首先使用Object.keys()方法获取当前对象的所有键值,然后使用map()方法将每个键值映射为一个新的对象。新对象中的id键值与原始对象中的id相同,而name和age键值则分别为原始对象中对应键值的每个元素。
```
var arr = [{id:1,name:['hh','bb'],age:['1','22']},{id:2,name:'dd',age:'33'}];
var result = arr.reduce(function(acc, cur) {
var keys = Object.keys(cur);
var nameArr = cur.name instanceof Array ? cur.name : [cur.name];
var ageArr = cur.age instanceof Array ? cur.age : [cur.age];
var temp = nameArr.map(function(name, index) {
return { id: cur.id, name: name, age: ageArr[index] };
});
return acc.concat(temp);
}, []);
console.log(result);
// [{id: 1, name: "hh", age: "1"}, {id: 1, name: "bb", age: "22"}, {id: 2, name: "dd", age: "33"}]
```
在上面的代码中,我们首先将原始数组的初始值设置为空数组[],然后使用reduce()方法迭代原始数组中的每个对象。在迭代过程中,我们将当前对象的name和age属性转换为数组,然后使用map()方法将每个元素映射为一个新的对象。最后,使用concat()方法将所有新对象连接成一个结果数组。
这样,结果数组中的每个对象都只有一个name和一个age属性。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)