如何连接或合并两个数组

How to concatenate or merge two arrays

本文关键字:两个 数组 合并 连接 何连接      更新时间:2023-09-26

我有两个数组变量:var1var2

$scope.var1 = {
"0":{"subjectId":"1","subjectShortName":"English","subjectCode":null,"IsSelected":true},
"1":{"subjectId":"2","subjectShortName":"Hindi","subjectCode":null,"IsSelected":true}
};
$scope.var2 = {"classId":"3","typeOfSubject":"main"}

如何合并或连接这两个数组以获得下面的数组类型?基本上,我想把所有的subjectId作为Key添加到第二个数组中。

$scope.var2 = {"classId":"3","typeOfSubject":"main", "subjectId":"{1,2}"}

在您的示例中,您使用的是对象而不是数组。但我把如何连接两个对象留在这里。https://docs.angularjs.org/api/ng/function/angular.extend

在您的情况下:

$scope.new_var = angular.extend({}, $scope.var1, $scope.var2)

如果你打算使用数组,我不知道angularjs中有一个原生函数。

您可以使用jquery>http://api.jquery.com/jquery.merge/

或者javascript

var hege = ["Cecilie", "Lone"];
var stale = ["Emil", "Tobias", "Linus"];
var children = hege.concat(stale);

您的期望并不明确。无论如何,按照你的要求,它就是这样。它会将var1的subjectId作为整数列表添加到var2中。

var subjectIds = [];
for(var k in $scope.var1) {
   subjectIds.push(parseInt($scope.var1[k].subjectId));
}
$scope.var2.subjectId = subjectIds.join(', ');

中的结果

{ classId: '3', typeOfSubject: 'main', subjectId: "1, 2" }

看起来你想合并这些对象,所以结果看起来像:

{
    "classId": "3", 
    "typeOfSubject": "main", 
    "subjectId": {
        "1": {"subjectId": "1", "subjectShortName": "English", ...}
        "2": {"subjectId": "2", "subjectShortName": "Hindi", ...}
    }
}

这不需要任何角度支持,但您可以使用angular.forEach轻松地迭代var1对象:

$scope.var2.subjectId = {};
angular.forEach($scope.var1, function(subject){
    this[subject.subjectId] = subject;
}, $scope.var2.subjectId); //set "this" to the member of var2 we're populating

这些是对象,而不是数组。。请注意,数组有这个[]括号,而对象和您的代码一样是{}。。在这种情况下,您希望将一个新对象连接到构建的对象中。。

你的问题已经在这篇文章中解决了

但是,如果您希望看到更小的代码。。根据这里的文档,将在AngularJS中使用extends函数

angular.extends(yourObject, objectToJoin, ...);

注意,该函数是从jQuery继承的,您可以在此处检查jQuery文档的版本