[英]Assigning values to a new array
我是關聯數組的新手,下面有這段代碼。 我想將prop
和sumprop[prop]
的值分配給新數組prop1
和prop2
。 在這里感謝一些幫助。
var name = new Array();
var amount = new Array();
name[0]="Peter";
amount[0]="50";
name[1]="John";
amount[1]="10";
name[2]="John";
amount[2]="20";
name[3]="Peter";
amount[3]="20";
name[4]="Mary";
amount[4]="40";
var sum = {};
var i;
var prop1 = new Array();
var prop2 = new Array();
for (i = 0; i < amount.length; i++) {
var name = name[i];
var oldSum = sum[name];
if (typeof oldSum === 'undefined') {
oldSum = 0;
}
sum[name] = oldSum + amount[i];
}
for (var prop in sum) {
if (sum.hasOwnProperty(prop)) {
console.log(prop + " " sum[prop]);
// assign to a new array
}
}
我重寫了您的代碼,以使您的意圖更加清楚(使用更好的變量名並更改數據的結構):
var people = [
{ name: 'Peter', amount: 50 },
{ name: 'John', amount: 10 }
// etc.
];
var sums = {};
var i, person;
for (i = 0; i < people.length; i++) {
person = people[i];
if (typeof sums[person.name] === 'undefined') {
sums[person.name] = 0;
}
sums[person.name] += person.amount;
}
for (var name in sums) {
if (sums.hasOwnProperty(name)) {
console.log(name, sums[name]);
}
}
您試圖迫使數組像字典一樣工作,這是一場艱苦的戰斗。 您也不需要使用數組構造函數(即new Array()
),因為您可以像這樣創建新數組var someVar = [];
。
您可能想要:
for (var prop in sum) {
if (sum.hasOwnProperty(prop)) {
prop1.push(prop);
prop2.push(sum[prop]);
}
}
你要這個:
for (var prop in sum) {
console.log(prop + " " sum[prop]);
prop1.push(prop);
prop2.push(sum[prop])
}
另外,初始化數組時不要使用new Array()
,請使用:
var prop1 = [];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.