从嵌套数组中移除第一个括号



我有一个数组如下:

let data =[
[
{
"Id": "110d611c-54e4-4593-a835-def0f34ed882",
"duration": 30,
"name": "burger",
"price": 10,

}
],
[
{
"Id": "edc241e9-5caf-4f0b-b6ea-6cf5fc57d260",
"duration": 10,
"name": "Cake",
"price": 5,

}
]
]

我试图删除第一个括号,像这样:

let data =
[
{
"Id": "110d611c-54e4-4593-a835-def0f34ed882",
"duration": 30,
"name": "burger",
"price": 10,

}
],
[
{
"Id": "edc241e9-5caf-4f0b-b6ea-6cf5fc57d260",
"duration": 10,
"name": "Cake",
"price": 5,

}
]

我尝试了很多解决方案,我尝试过的最常见的是使用这种方式:

let newData = data[0]
但结果总是给我第一个嵌套数组像这样:
[
{
"Id": "110d611c-54e4-4593-a835-def0f34ed882", 
"duration": 30, 
"name": "burger", 
"price": 10
}
]

我尝试使用JSON.stringify()将其转换为字符串,然后通过执行

删除括号
JSON.stringify(data).substring(1, JSON.stringify(data).length - 1);

但是当我解析它时,我得到这个错误:

SyntaxError: JSON Parse error: Unable to parse JSON string
我真的不知道完成这件事的最好方法是什么。提前谢谢。

您需要每个嵌套数组的第一个元素,而不是外部数组的第一个元素。所以使用map()

let data = [
[{
"Id": "110d611c-54e4-4593-a835-def0f34ed882",
"duration": 30,
"name": "burger",
"price": 10,
}],
[{
"Id": "edc241e9-5caf-4f0b-b6ea-6cf5fc57d260",
"duration": 10,
"name": "Cake",
"price": 5,
}]
];
let newData = data.map(el => el[0]);
console.log(newData);

删除外部括号将导致javascript对象无效。

要获得包含所有对象的单个数组,可以使用flatMap

data.flatMap(x => x)

来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap

您想要的结果是无效的,相反,您可以使用flat获得对象数组:

data.flat()

let data = [
[
{
Id: "110d611c-54e4-4593-a835-def0f34ed882",
duration: 30,
name: "burger",
price: 10,
},
],
[
{
Id: "edc241e9-5caf-4f0b-b6ea-6cf5fc57d260",
duration: 10,
name: "Cake",
price: 5,
},
],
];
const result = data.flat();
console.log(result);

最新更新