【问题标题】:Remove array from data received from an http call - angularJS从从 http 调用接收到的数据中删除数组 - angularJS
【发布时间】:2020-10-19 01:52:59
【问题描述】:

我正在执行 http 调用以从数据库中获取数据。有 6 种类型需要单独调用。

        $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}]

【问题讨论】:

  • 不要将 response.data 推送到 allObjects,因为您的响应已经在数组中。只需将其分配给变量
  • @MuhammadFazeel 我正在推动它,因为我需要它附加到数组中。如果我将它分配给一个变量,它将在 for each 方法期间被覆盖。
  • 阅读组件和控制器的语法。任何包含注入 $scope 的文章都可以被认为是过时的。
  • @codeandrunningmom 我的回答能解决你的问题吗?

标签: javascript json angularjs


【解决方案1】:

您可以使用Array.prototype.flat() 函数来实现此目的,该函数将数组数组压缩到某个深度级别。您的情况的深度将是1,它已被设置为默认值

var arr = [
   {}, 
   [
     { 
        test: 1 
     }
   ], 
   [ 
     { 
        second: 2 
     }
   ], 
   [
     {
        etc: 3
     }
   ]
];
console.log(arr.flat());

该函数实质上将数组中的数组展平,仅深度为 1,如果您想要展平的数组中有数组,您可以将深度更改为 2

但是,空对象仍然存在。您可以在展平后进行检查以摆脱这些。

【讨论】:

  • 这并没有完全解决我的问题,因为这是我正在使用的浏览器不支持的原型。但它确实让我找到了解决方案。太感谢了!这就是我最终发现的: let arr = [ [1,2,3], [2,3,4] ]; console.log([].concat(...arr))
  • stackoverflow.com/questions/50993498/… 这是@R.Cha 提供的答案。不知道如何给他们适当的道具和信用。谢谢你们俩:)
猜你喜欢
  • 2013-08-16
  • 2013-08-08
  • 2015-02-02
  • 1970-01-01
  • 1970-01-01
  • 2017-02-17
  • 2016-02-28
  • 1970-01-01
  • 2014-10-07
相关资源
最近更新 更多