arrays - 如何在angular6中合并数组值相同的id对象?
问题描述
在这里,我收到了我的 Angular 项目的回复
const testArray = [
{PackageID: 7, FormsList: [{Form_Name: "string One"}]}
{PackageID: 7, FormsList: [{Form_Name: "string Two"}]}
{PackageID: 7, FormsList: [{Form_Name: "string Three"}]}
{PackageID: 11, FormsList: [{Form_Name: "string One"}]}
{PackageID: 11, FormsList: [{Form_Name: "string One"}]}
{PackageID: 11, FormsList: [{Form_Name: "string One"}]}]
获得此数组后,我想与以下相同 ID 中的 FormsList 数组合并
const testArray = [
{PackageID: 7, FormsList: [{Form_Name: "string One"}, {Form_Name: "string Two"}, {Form_Name: "string Three"}]}
{PackageID: 11, FormsList: [{Form_Name: "string One"}, {Form_Name: "string Two"}, {Form_Name: "string Three"}]}]
和合并后如何删除特定的 FormList>Form_Name 选定对象。
例如,我得到这样的删除值
const deleteArray = [{PackageID: 7, FormsList: [{Form_Name: "string Two"}]}]
测试数组结果没有第二个对象,如下面的代码
const testArray = [{PackageID: 7, FormsList: [{Form_Name: "string One"}, {Form_Name: "string Three"}]}, {PackageID: 11, FormsList: [{Form_Name: "string One"}, {Form_Name: "string Two"}, {Form_Name: "string Three"}]}]
请帮助解决这个问题。
解决方案
那么,让我们开始吧!我们应该做的第一件事是创建一个列表PackageID's
const ids = testArray.map(item => item.PackageID)
然后让我们从这个数组中获取唯一值。为此,我们需要分两步
- 创建一个函数
distinct
const distinct = (value, index, self) => {
return self.indexOf(value) === index
}
- 创建 uniq id 的列表
const uniqIds = ids.filter(distinct)
现在我们可以合并testArray
const res = uniqIds.map(id => {
let tmp = []
const arr = testArray.filter(item => item.PackageID === id)
arr.forEach(item => {
tmp.push(...item.FormsList)
})
return { PackageID: id, FormsList: tmp }
})
我希望它会帮助你
推荐阅读
- javascript - JavaScript 如何创建动态变量
- android - 如何在 EditText Android 工作室中突出显示一个单词?
- flutter - Flutter_webview_plugin net::err_unknown_url_scheme。打开外部应用程序时出错
- azure - PowerShell 脚本需要帮助
- python-3.x - 在python中查找给定列表的所有子序列的有效方法是什么?
- java - java枚举异常
- google-chrome - 将 Chrome OS 键盘快捷键与普通的 3rd 方键盘一起使用?概览模式?
- shell - 有什么方法可以自动制作 shell 脚本别名?
- react-native - 访问 redux 持久化外部组件
- search - 为什么 Shift+F3 在 Notepad++ 中停止工作?