gpt4 book ai didi

javascript - Angular Js : Scope Arrays

转载 作者:搜寻专家 更新时间:2023-10-31 22:58:59 25 4
gpt4 key购买 nike

HTML

<div ng-controller="MyCtrl">
this is 'a' array
<br>
<div ng-repeat ="element in a">
{{element.value}}
</div>
<br>
this is 'b' array
<br>
<div ng-repeat ="element in b">
{{element.value}}
</div>
<br>
this is final array
<br>
<div ng-repeat ="element in final_array">
{{element.value}}
</div>
</div>'

js Controller

var myApp = angular.module('myApp', []);

//myApp.directive('myDirective', function() {});
//myApp.factory('myService', function() {});

function MyCtrl($scope) {

$scope.a = [{
"id": 1,
"value": 10
}, {
"id": 2,
"value": 20
}]
$scope.b = [{
"id": 1,
"value": 20
}, {
"id": 3,
"value": 40
}]
var c = [];
c = $scope.a.concat($scope.b)
console.log(c)
$scope.final_array = [];
for (var i = 0; i < c.length; i++) {
if ($scope.final_array.length == 0) {
$scope.final_array.push(c[i]);

} else {
alert("hi")
for (var j = 0; j < $scope.final_array.length; j++) {
$scope.flag = 0;
if ($scope.final_array[j].id == c[i].id) {
$scope.final_array[j].value = parseFloat($scope.final_array[j].value) + parseFloat(c[i].value);
$scope.flag = 0;
break;
} else {
$scope.flag = 1;
}
}
if ($scope.flag == 1) {
$scope.final_array.push(c[i]);
}
}
}
console.log($scope.a)
console.log($scope.b)

console.log($scope.final_array)
}

我正在连接两个数组 ab如果键 id 的值相同,我会更新该值。 但是当我更新合并数组 $scope.final array 时,它会更新数组的值。

这是 fiddle JS Fiddle Demo

最佳答案

因为两个数组都引用同一个对象,所以当对象更新时,两个数组都将具有更新后的值。

当你将值复制到最终数组来修复它时,你可以复制原始对象

$scope.final_array.push(angular.copy(c[i]));

可以像这样简化计算逻辑

var app = angular.module('my-app', [], function() {})

app.controller('AppController', function($scope) {
$scope.a = [{
"id": 1,
"value": 10
}, {
"id": 2,
"value": 20
}]
$scope.b = [{
"id": 1,
"value": 20
}, {
"id": 3,
"value": 40
}]

var c = $scope.a.concat($scope.b),
map = {};

$scope.final_array = [];
c.forEach(function(item) {
if (!map[item.id]) {
map[item.id] = angular.copy(item);
$scope.final_array.push(map[item.id]);
} else {
map[item.id].value += +item.value;
}
});
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="my-app">
<div ng-controller="AppController">
<pre>{{a}}</pre>
<pre>{{b}}</pre>
<pre>{{final_array}}</pre>
</div>
</div>

关于javascript - Angular Js : Scope Arrays,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35475704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com