最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - AngularJS : How to concat two arrays? - Stack Overflow

programmeradmin2浏览0评论

I have following arrays with values (i am generating the values on go)

$scope.objectName = [{ Name: '' }];
$scope.propertiesElement = [{ Key: '', Value: '' }];

I want to concatenate these two objects to get the following result

[{Name:''},{ Key: '', Value: '' }]

Plunker link , somehow that's not working either

when I click on the add row button it will add another row for key and value text boxes only not for name, I can add n no of rows and when I click on Submit it should show the kev value pair as

[{Name:''},{ Key: '', Value: '' },{ Key: '', Value: '' },{ Key: '', Value: '' }.....so on]

Thanks

I have following arrays with values (i am generating the values on go)

$scope.objectName = [{ Name: '' }];
$scope.propertiesElement = [{ Key: '', Value: '' }];

I want to concatenate these two objects to get the following result

[{Name:''},{ Key: '', Value: '' }]

Plunker link , somehow that's not working either

when I click on the add row button it will add another row for key and value text boxes only not for name, I can add n no of rows and when I click on Submit it should show the kev value pair as

[{Name:''},{ Key: '', Value: '' },{ Key: '', Value: '' },{ Key: '', Value: '' }.....so on]

Thanks

Share Improve this question asked May 22, 2014 at 19:09 eightynineeightynine 1271 gold badge1 silver badge13 bronze badges 1
  • 1 Uh.... why do you want the name in the same array as your key value pairs. Couldn't you submit it like this: var submission = {}; submission.name = $scope.objecName.name; submission.keyValuePairs = $scope.propertiesElement; – Mike Quinlan Commented May 22, 2014 at 19:29
Add a ment  | 

1 Answer 1

Reset to default 2

Not sure why you want to build an array of mismatched objects. That seems to me to be asking for trouble. I would suggest possibly doing the following:

$scope.objects = [{Name: '', Elements: []}];

Then you can easily manage multiple objects who have elements:

(I use underscore http://underscorejs/)

$scope.addElementToObject = function(objName, element){
   _.where($scope.mergedArray, {Name: objName}).Elements.push(element);
};

Then you can add to the list of elements for that object without having to eval the object in the elements array on each use.


If you still want/need to merge arrays of mismatched objects, it would be the following:

$scope.objectName = [{ Name: '' }];
$scope.propertiesElement = [{ Key: '', Value: '' }];
$scope.mergedArray = $scope.objectName.contact($scope.propertiesElement);

$scope.addElement = function(element){
   $scope.mergedArray.push(element);
};

Then, in your click event code:

$scope.addElement({ Key: 'someKey', Value: 'Some Value' });

I hope this helps.

发布评论

评论列表(0)

  1. 暂无评论