总noob问题。在PHP中,我可以很容易地做到这一点:
foreach( $array1 as $key => $value ) {
$array2[$key] += $value;
}
我无法弄清楚如何在javascript中执行此操作...我确信必须有办法。
编辑:我循环的并不重要,应该有一个通用的解决方案,用于在循环内动态创建关联数组或对象,并动态创建它的键/值对,并带有加总选项数字。也许下面的代码将有助于理解:var vat = {};
InvoiceItems.each(function(item){
vat_rate = item.get('vat_rate');
vatsum = Number(roundNumber( 100 * item.get('vat'), 2 ) / 100, 2);
vat[vat_rate] += vatsum;
});
问题是,这会产生如下对象:{"20": "undefined18.00","null":"0.00"}
因此存在“未定义”以及空的空键/值对。
答案 0 :(得分:4)
JavaScript没有像PHP中定义的那样的for-each循环。如果您正在处理数组,则应使用for( ; ; )
循环。否则,如果您正在处理对象,则最接近的是:
// Assume `object` to exist
var key, value; // Declare variables
for (key in object) {
value = object[key];
}
删除了部分原始答案,因为它似乎与问题无关
var dom_elements = document.querySelectorAll("input"); // Example, HTMLCollection
var array2 = {}; // Holds counters
for (var i=0; i<dom_elements.length; i++) {
var element = dom_elements[i]; // Select element
var key = element.name; // Example: Elements are grouped by name
var value = element.value; // Example: value
if (key in array2) {
array2[key] += value;
} else { // If the key does not exist, create one:
array2[key] = value;
}
}
将vat[vat_rate] += vatsum;
替换为:
if (vat_rate in vat) {
vat[vat_rate] += vatsum;
} else {
vat[vat_rate] = vatsum;
}
答案 1 :(得分:0)
我认为你要做的是:
var array2 = [4, 5, 6];
var array1 = [1, 2, 3];
for (var key in array1) {
array2[key] += array1[key];
}
这会将array1中的每个项目添加到array2中的相应项目,并将array2中的项目替换为结果,这实际上就是您在PHP代码中所做的事情。