簡體   English   中英

如何在angularjs中向對象數組添加屬性

[英]how to add properties to array of objects in angularjs

我有一個對象數組,如下所示:

var array = [{'content1': 'abc', 'id1':'100'},{'content2': 'xyz', id2':'200'}...];

現在,我想向每個對象添加新元素(我不知道是否可以, 但不是手動添加 ),並且我希望相同的數組如下所示:

var array = [{'content1': 'abc', 'id1':'100', 'name': 'foo'},{'content2': 'xyz', 'id2':'200', 'name': 'bar'}...];

有人可以幫我做到這一點嗎?

您可以使用角度合並

   var array = [{
    'content1': 'abc',
    'id1': '100'
  }, {
    'content2': 'xyz',
    'id2': '200'
  }];

  var array2 = [{
     'name': 'foo'
  }, {
     'name': 'bar'
  }];

  var object = angular.merge({}, array, array2)

結果將合並所有屬性:

var array2 = [{
    'content1': 'abc',
    'id1': '100',
    'name': 'foo'
  }, {
    'content2': 'xyz',
    'id2': '200',
    'name': 'bar'
  }];

看看這個矮人:

http://plnkr.co/edit/X7Zv99qNXSkmHh4lIBMP

您不能使用push來設置屬性。 push可以用來添加數組元素。 如果要使用

$scope.object.array1.push(value);

那么值應該是一個像

var value = {content1: 'xyz',id:'4'};

要添加屬性,您可以按照以下步驟進行。

像說您的對象:

$scope.object={
     array1: [{content1: 'abc', id1:'100'},
       {content2: 'xyz', id2:'200'}],
     array2: [{content1: 'abc', id1:'100'},
     {content2: 'xyz', id2:'200'}]
    };

如果要為array1的每個對象添加屬性name 您可以使用forEach添加新的屬性和值。 說一個叫做addProperty的函數來添加屬性和值。

$scope.addProperty = function(){
  var i =0;
  angular.forEach($scope.object.array1, function(eachObj) {
    i+=1;
    eachObj.name ='foo'+i;
  });
};

然后把array1放出來

[{"content1":"abc","id1":"100","name":"foo1"},{"content2":"xyz","id2":"200","name":"foo2"}]

朋克演示

最簡單的方法是使用.map();。

array.map(function(element) {
    return element.name = insertedName;
});

您可以使用將發送insertedName的函數。

有幾種方法可以對此進行皮膚處理。 取決於您需要的動態程度。

這是一個基本示例,顯示如何通過按索引訪問對象來完成此操作:

var array = [{'content1': 'abc', 'id1':'100'},{'content2': 'xyz', 'id2':'200'}];

array[0].name = 'foo';
array[1].name = 'bar';

https://jsfiddle.net/0f6L1x44/

如果您需要更動態地添加名稱,則可以執行以下操作:

findById(100).name = 'foo';
findById(200).name = 'bar';

function findById(id) {
    var index = array.map(function(item) { return item.id; }).indexOf(id);

    return array[index];
}

https://jsfiddle.net/pj31n0Lj/

注意:在此示例中,我清理了您的數組對象。 不知道為什么會有content1和content2等。

我有一個像這樣的對象:

$scope.object={array1: [ ], array2:[ ] };

如何將新值推入這些數組?

當我嘗試$scope.object.array1.push(value); 我收到一條錯誤消息: 無法讀取推送。

暫無
暫無

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

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