我试图在angular-js中循环一个对象并向对象foreach循环对象添加一个数组,我的代码如下所示但似乎不起作用
vm.patients= [ {[ {"p1": "value1"} ]}, {[ {"p1": "value1"} ]}, {[ {"p1": "value1"} ]} }]; for(var i=0; i < vm.patients.length; i++){ vm.patients[i].concat([{"z1": "z2",}]);` }
我的目标是添加{"z1": "z2",}
到每个循环,即3个循环数组,以便我以下结束
vm.patients= [ {[ {"p1": "value1"},{"z1": "z2",} ]}, {[ {"p1": "value1"},{"z1": "z2",} ]}, {[ {"p1": "value1"},{"z1": "z2",} ]} }];
concat
但似乎没有用,任何解决方案?
for(;;)
如果它们不是类似于数组的对象,则不使用循环迭代对象.
for(in)
但是,你可以迭代:
for(var key in yourObj) { if (obj.hasOwnProperty(key)) { var value = yourObj[key]; //your code here } }
或者angularjs-fashion:
angular.forEach(yourObj, function(value, key) { // your code here })
另外:
vm.patients[i].concat([{"z1": "z2",}]);
这是错误的,因为你正在调用像"patient1".concat([{"z1":"z2"}])这样的东西:
不改变价值.尝试在控制台中执行以下代码:
var x = "a"; x.concat("b"); console.log(x);
听起来是错的.尝试在控制台中执行以下操作:
var x = "a"; console.log(x.concat([{'a':'b'}]))
看看会发生什么.
提示:如果您的代码遇到问题,请尝试在单个指令和分配中分离所有代码.
也许你打算:
var yourObj = { "p1": {"name": "patient1"}, ... others ... }; angular.forEach(yourObj, function(value, key) { // your code here angular.extend(value, {"z1": "z2"}) })