简体   繁体   English

将值分配给新数组

[英]Assigning values to a new array

I am new to associative arrays and I have this code below. 我是关联数组的新手,下面有这段代码。 I would like to assign the values for prop and sumprop[prop] to a new array, prop1 and prop2 . 我想将propsumprop[prop]的值分配给新数组prop1prop2 Appreciate some help here. 在这里感谢一些帮助。

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
  }
}

I rewrote your code to make your intentions more clear (using better variable names and changing the data's structure): 我重写了您的代码,以使您的意图更加清楚(使用更好的变量名并更改数据的结构):

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]);
  }
}​

Your trying to force arrays to act like dictionaries, which is an uphill battle. 您试图迫使数组像字典一样工作,这是一场艰苦的战斗。 You also don't need to use the array constructor (ie new Array() ) because you can just create a new array like this var someVar = []; 您也不需要使用数组构造函数(即new Array() ),因为您可以像这样创建新数组var someVar = []; .

You probably want: 您可能想要:

for (var prop in sum) {
  if (sum.hasOwnProperty(prop)) {

     prop1.push(prop);
     prop2.push(sum[prop]);

  }
}

You want this: 你要这个:

for (var prop in sum) {
  console.log(prop + " " sum[prop]);
  prop1.push(prop);
  prop2.push(sum[prop])
}

Also, don't use new Array() when initializing arrays, use: 另外,初始化数组时不要使用new Array() ,请使用:

var prop1 = [];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM