js循环给数组赋值,结果值都是最后一个

baidu_37463348 2017-02-08 05:25:57

var app = angular.module('app', []);
app.controller('formController', function($scope) {

var test={dd:'444',fff:'555',ggg:'0'}

var testArr=[
{aa:"1",bb:"11",cc:"111"},
{aa:"2",bb:"22",cc:"333"}
]

var arr = [];
angular.forEach(testArr, function(item){
test.ggg = item.cc
arr.push(test)
});
console.log(arr) //[{ddd:"444",fff:"555",ggg:"333"},{ddd:"444",fff:"555",ggg:"333"}]
});

为什么不是这样[{dd: "444", fff: "555", ggg: "111"},{dd: "444", fff: "555", ggg: "333"}],是什么原因,要怎么才能实现呢
...全文
2484 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
redlz2500 2017-02-09
  • 打赏
  • 举报
回复
怎么都是这个问题? http://bbs.csdn.net/topics/392084316
天际的海浪 2017-02-08
  • 打赏
  • 举报
回复
因为你每次 push() 的都是同一个对象的引用地址,你应该每次循环都创建一个新的对象,才能让每次 push() 的对象引用地址不一样。
var app = angular.module('app', []);
	app.controller('formController', function($scope) {
		var testArr=[
			{aa:"1",bb:"11",cc:"111"},
			{aa:"2",bb:"22",cc:"333"}
		]
			
		var arr = [];
		angular.forEach(testArr, function(item){
				var test={dd:'444',fff:'555',ggg:'0'}
    		    test.ggg = item.cc
    		    arr.push(test)
		});
		console.log(arr)
	});

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧