簡體   English   中英

如何連接或合並兩個數組

[英]How to concatenate or merge two arrays

我有兩個數組變量: 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的subjectIds作為整數列表添加到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文檔版本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM