AngularJS中如何将多组对象数组合并为单一对象数组?
在AngularJS中扁平化嵌套对象数组的方法
没问题,要把这种两层嵌套的对象数组合并成单一数组,在AngularJS里有好几种简单的实现方式,给你详细说说:
方法一:使用AngularJS内置的angular.forEach
这是最贴合AngularJS风格的写法,手动遍历每个子数组并拼接:
// 你的输入嵌套数组 const nestedArray = [ [ { "title": "asd", "description": "asd" }, { "title": "asz", "description": "sd" } ], [ { "title": "ws", "description": "sd" }, { "title": "re", "description": "sd" } ], [ { "title": "32", "description": "xxs" }, { "title": "xxc", "description": "11" } ] ]; const flattenedArray = []; // 遍历外层数组的每个子数组 angular.forEach(nestedArray, function(subArray) { // 把当前子数组的元素合并到结果数组中 flattenedArray = flattenedArray.concat(subArray); }); console.log(flattenedArray); // 输出就是你期望的单一对象数组
方法二:使用原生JS的flat()方法(简洁高效)
如果你的项目环境支持ES2019及以上,这个方法最省心,一行代码搞定:
const nestedArray = [ /* 你的输入数组 */ ]; const flattenedArray = nestedArray.flat();
flat()默认会处理一层嵌套的数组,刚好匹配你的需求。如果是更深层级的嵌套,可以传入参数flat(Infinity)来彻底扁平化。
方法三:使用原生JS的reduce()方法
这也是一种非常灵活的写法,通过累加器逐步合并数组:
const nestedArray = [ /* 你的输入数组 */ ]; const flattenedArray = nestedArray.reduce(function(accumulator, currentSubArray) { return accumulator.concat(currentSubArray); }, []); // 初始累加器设为空数组
这几种方法最终都会得到你想要的输出数组,你可以根据项目的环境和个人习惯选择合适的写法~
内容的提问来源于stack exchange,提问作者user3599302
相关产品推荐
相关产品推荐

