首页 > 解决方案 > 如何将数组中的数组拆分为json?地图 Javascript

问题描述

所有代码都在这里:

https://stackblitz.com/edit/angular-format-wi?file=src/app/app.component.ts

您可以看到带有 3 个对象的数组,但在对象内部您也可以看到数组...

我需要将所有数组拆分为对象。

校验码:

this.allFilters.push(
  Array.isArray(data.value)
    ? data.value.map((obj: any) => {
        return {
          name: obj.name,
          value: obj.value
        };
      })
    : { name: data.name, value: data.value }
);

Html 打印并不重要,这仅适用于视图 json。

现在我的 allFilters var 就像:

[{ "name": "one", "value": 1 }, { "name": "two", "value": 2 }, { "name": "three", "value": 3 }],
{"name": "Second", "value": 15 },
[{ "name": "one", "value": 1 }, { "name": "two", "value": 2 }, { "name": "three", "value": 3 }, { "name": "four", "value": 4 }]

带有内部数组、对象、数组的数组,但我需要这样:

[ 
{ "name": "one", "value": 1 }, { "name": "two", "value": 2 }, { "name": "three", "value": 3 },
{"name": "Second", "value": 15 },
{ "name": "one", "value": 1 }, { "name": "two", "value": 2 }, { "name": "three", "value": 3 }, { "name": "four", "value": 4 }
]

我期望对象数组。

没有混合数组和对象的数组。

只是反对里面。

标签: javascriptarrays

解决方案


什么时候data.value是一个数组,即使你这样做map也会给你同样的结果。

当它是一个数组时修改你的recieveMessage(data)和使用。array.concat()

recieveMessage(data) {
    if (Array.isArray(data.value)) {
        this.allFilters = this.allFilters.concat(data.value);
      } else {
        this.allFilters.push({ name: data.name, value: data.value });
      }
}

ternary运营商,

recieveMessage(data) {
     Array.isArray(data.value) ?
            this.allFilters = this.allFilters.concat(data.value)
          :
            this.allFilters.push({ name: data.name, value: data.value });
}

推荐阅读