Javascript 从http调用接收的数据中删除数组-angularJS
我正在做一个http调用以从数据库获取数据。有6种类型必须单独调用Javascript 从http调用接收的数据中删除数组-angularJS,javascript,json,angularjs,Javascript,Json,Angularjs,我正在做一个http调用以从数据库获取数据。有6种类型必须单独调用 $scope.getAll = function() { var url = 'http://someurl/'; varl allObjects = []; $scope.types.forEach(element => { http({ method: 'GET', u
$scope.getAll = function() {
var url = 'http://someurl/';
varl allObjects = [];
$scope.types.forEach(element => {
http({
method: 'GET',
url: url + element.name
}).then(function successCallback(response) {
allObjects.push(response.data);
}, function errorCallback(response) {
// this doesn't apply to my issue
});
$scope.allObjects = allObjects;
}
返回如下JSON对象:
[{},
[{ "label":"myLabel",
"types": {
"source":{"url":"some url, "storage":"some storage"}}},
{ "label":"myLabel",
"types": {
"source":{"url":"some url, "storage":"some storage"}}}],[{ more objects}],[{ more objects}],],
所有对象返回具有嵌套数组的相同结构。我需要帮助解决的问题是,每次它通过该类型的迭代时,它都会将其添加为一个对象数组。我需要将其添加为一个新对象,而不是一个对象数组。即:
我得到的是:
[{}, [{first iteration}], [{second iteration}], [{etc}]]
我需要的是:
[{first iteration}, {second iteration}, {etc}]
您可以使用
Array.prototype.flat()
函数来实现这一点,该函数将数组压缩到某个深度级别。您的情况的深度将是1
,这已设置为默认值
var-arr=[
{},
[
{
测试:1
}
],
[
{
第二:2
}
],
[
{
等:3
}
]
];
console.log(arr.flat())代码>不要将response.data推送到AllObject,因为您的响应已经在数组中。。只需将其分配给variable@MuhammadFazeel我推它是因为我需要它附加到数组中。如果我把它赋给一个变量,它将在for each方法期间被覆盖。请阅读组件和控制器的语法。任何包含注入$scope的文章都可能被视为过时。@code和runningmom我的答案解决了您的问题吗?这并没有完全解决我的问题,因为这是一个原型,我使用的浏览器不支持它。但这确实让我找到了解决办法。非常感谢你!这就是我最终发现的:让arr=[[1,2,3],[2,3,4];console.log([].concat(…arr))这是@R.Cha提供的答案。不知道如何给予他们适当的支持和信任。谢谢你们俩:)