javascript - 为什么数组只包含最后一个值 n 次?

标签 javascript angularjs arrays scope

此函数返回数组列表中的相同值。

例如,如果 i=10,那么我的数组应该包含 10 个不同的值,但它只存储最后一个值 10 次。

我的代码有什么问题?

$scope.webTempIds=[];
$scope.wId={};
$scope.getIds=function(){
  for(var i=0;i<$rootScope.retData.length;i++){
    $scope.wId.ID=$rootScope.retData[i].WEBUI_TEMP_ID;
    $scope.webTempIds.push($scope.wId);
  }
  return $scope.webTempIds;
}

最佳答案

$scope.wId={};

每次都改变。该数组包含对此对象的引用,因此当您更改值时,它会更改数组中的值。

let obj = {};

let result = [];
for(let i = 0; i<10; i++){
    obj.a = i;
    result.push(obj);
}

console.log(result);

关于javascript - 为什么数组只包含最后一个值 n 次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46128163/

相关文章:

javascript - 数组中的匹配值,即对象数组中的值

JavaFX引用主数组列表

javascript - 如何将Class添加到具有最大数据属性值的div?

javascript - Javascript自定义 Highcharts 方法

javascript - 对 angularjs 中的所有函数使用 1 种方法缩短为一个函数

angularjs - 在同一元素上嵌套 ng-repeat,而不展平原始数据源

java - 在递归中查找Java字符串数组的无序序列

javascript - 重建部分解构对象 es6

javascript - 使用 iframe 时输入检查 instanceof 的安全方法?

javascript - Angularjs 比较两个数组中的元素