【问题标题】:Extending array instead of replacing in AngularJS扩展数组而不是在 AngularJS 中替换
【发布时间】:2015-12-05 02:06:31
【问题描述】:

我有一个函数可以用新数组替换 LocalStorage 中的数组。 它看起来像这样:

$scope.extendData = function () {

    $scope.recordlist = $scope.filteredRecordsToExtend;
    jsonToRecordLocalStorage($scope.recordlist);
};

我要做的是创建另一个函数,而不是用新数组 (filteredRecordsToExtend) 替换记录列表,它实际上将新数组中的对象添加到现有数组中,并附加它们。

我尝试了以下方法:

$scope.extendData = function () {

    $scope.recordlist.push($scope.filteredRecordsToExtend);
    jsonToRecordLocalStorage($scope.recordlist);
};

但它会创建一个包含对象的新数组,它不会附加唯一的对象。

哦,我已经加载了 LoDash,所以它可能有用吗?

有什么建议吗?

【问题讨论】:

    标签: javascript arrays angularjs local-storage lodash


    【解决方案1】:

    您可以使用 Lodash (.flatten()) “扁平化”嵌套数组,也可以使用 .concat() 而不是 .push() 来合并 2 个或更多数组。

    洛达什:

    $scope.recordlist = _.flatten($scope.recordlist.push($scope.filteredRecordsToExtend))
    

    纯 JS:

    $scope.recordlist = $scope.recordlist.concat($scope.filteredRecordsToExtend)
    

    【讨论】:

    • LoDash 解决方案无论出于何种原因返回一个空数组,但 .concat() 有效!
    • flatten() 也应该可以工作。尝试调试您的代码(如果值得)。
    【解决方案2】:
    $scope.recordlist.push.apply($scope.recordlist, $scope.filteredRecordsToExtend)
    

    使用apply() 将多个参数传递给push() 数组形式

    【讨论】:

      猜你喜欢
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多