欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 在 Vue 3 中将拆分后的数组合并回原数组

在 Vue 3 中将拆分后的数组合并回原数组

2025/5/24 4:22:12 来源:https://blog.csdn.net/weixin_42498594/article/details/147335114  浏览:    关键词:在 Vue 3 中将拆分后的数组合并回原数组

接上文Vue 3 中按照某个字段将数组分成多个数组_vue3怎么进行数组对象--分割对象-CSDN博客

方法一:使用 flat() 方法

// 假设这是拆分后的多维数组
const splitArrays = [[{id: 1, category: 'A'}, {id: 3, category: 'A'}],[{id: 2, category: 'B'}, {id: 5, category: 'B'}],[{id: 4, category: 'C'}]
];// 使用 flat() 合并
const mergedArray = splitArrays.flat();
console.log(mergedArray);

方法二:使用 reduce() 方法

const mergedArray = splitArrays.reduce((acc, currentArray) => {return acc.concat(currentArray);
}, []);

方法三:使用展开运算符

const mergedArray = [].concat(...splitArrays);

方法四:如果拆分后是对象形式,转换为数组再合并

// 假设拆分后是这样的对象
const groupedByCategory = {A: [{id: 1, category: 'A'}, {id: 3, category: 'A'}],B: [{id: 2, category: 'B'}, {id: 5, category: 'B'}],C: [{id: 4, category: 'C'}]
};// 合并方法
const mergedArray = Object.values(groupedByCategory).flat();

方法五:在 Vue 3 组件中使用计算属性

import { computed } from 'vue';export default {setup() {const splitArrays = [[{id: 1, category: 'A'}, {id: 3, category: 'A'}],[{id: 2, category: 'B'}, {id: 5, category: 'B'}],[{id: 4, category: 'C'}]];const mergedArray = computed(() => splitArrays.flat());return { mergedArray };}
};

方法六:保持原始顺序的合并

如果需要保持原始数组的顺序,可以在拆分时保留索引信息

// 拆分时保留原始索引
const originalArray = [{id: 1, category: 'A', index: 0},{id: 2, category: 'B', index: 1},{id: 3, category: 'A', index: 2},{id: 4, category: 'C', index: 3},{id: 5, category: 'B', index: 4}
];// 拆分操作
const groupedByCategory = originalArray.reduce((acc, item) => {const key = item.category;if (!acc[key]) {acc[key] = [];}acc[key].push(item);return acc;
}, {});// 合并时按原始索引排序
const mergedArray = Object.values(groupedByCategory).flat().sort((a, b) => a.index - b.index).map(({index, ...rest}) => rest); // 移除临时索引console.log(mergedArray);

注意事项

  1. 如果拆分后的数组结构不是简单的二维数组,可能需要先进行适当处理

  2. 合并后的数组顺序可能与原数组不同,如需保持顺序需要额外处理

  3. 对于大型数组,flat() 方法性能较好

  4. 如果数组中包含对象引用,合并后的数组仍会引用相同的对象

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词