Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中为循环内的数组键添加值_Javascript_Arrays_Associative Array - Fatal编程技术网

在javascript中为循环内的数组键添加值

在javascript中为循环内的数组键添加值,javascript,arrays,associative-array,Javascript,Arrays,Associative Array,完全没有问题。在PHP中,我可以轻松做到这一点: foreach( $array1 as $key => $value ) { $array2[$key] += $value; } 我想不出用javascript做这件事的方法。。。我相信一定有办法 编辑:我循环什么并不重要,应该有一个通用的解决方案,可以在循环中动态创建关联数组或对象,还可以动态创建它的键/值对,并选择累加数字。下面的代码可能有助于理解: var vat = {}; InvoiceItems.each(funct

完全没有问题。在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”}


因此存在“未定义”和空的null键/值对。

JavaScript没有PHP中定义的for-each循环。如果您处理的是数组,那么应该使用
for(;;)
循环。否则,如果您处理的是对象,则可以得到的最接近的结果是:

// Assume `object` to exist
var key, value; // Declare variables
for (key in object) {
    value = object[key];
}
删除了原始答案的一部分,因为它似乎与问题无关

代码,作为对注释的响应:
JavaScript没有PHP中定义的for-each循环。如果您处理的是数组,那么应该使用
for(;;)
循环。否则,如果您处理的是对象,则可以得到的最接近的结果是:

// Assume `object` to exist
var key, value; // Declare variables
for (key in object) {
    value = object[key];
}
删除了原始答案的一部分,因为它似乎与问题无关

代码,作为对注释的响应:
我想你要做的是:

var array2 = [4, 5, 6];
var array1 = [1, 2, 3];
for (var key in array1) {
    array2[key] += array1[key];
}

这将把array1中的每个项添加到array2中相应的项中,并用结果替换array2中的项,这基本上就是您在PHP代码中所做的。

我认为您正在尝试做的是:

var array2 = [4, 5, 6];
var array1 = [1, 2, 3];
for (var key in array1) {
    array2[key] += array1[key];
}

这将把array1中的每个项添加到array2中相应的项中,并用结果替换array2中的项,这基本上就是您在PHP代码中所做的。

我忘了提到我需要动态创建第二个数组(或对象)以及我需要使用Associative数组(或对象)我不知道你指的是哪个代码块。foreach部分其实并不重要,因为我实际上是在一组dom元素上循环,我需要将类似的项分组在一起,并将它们的值相加。所以对我来说,“key”实际上是一种将相似的项组合在一起,然后将“value”设置为所有这些元素的总和的方法。。。?您将使用一个对象,
{}
。与其描述问题的特征,不如直截了当地提出实际问题?我现在来介绍一下你的新代码块。是的,这就是我要找的,但它似乎不适合我。而不是
array2[index]=值,我需要类似于
array2[index]+=value的东西但它似乎把事情搞砸了,因为我第一次添加值时,键是未定义的,所以结果会是:未定义2.22,而它应该是2.22。此外,数组将包含null:null键/值对。@ragulka根据您最近的评论更新了答案。我忘了提到我需要动态创建第二个数组(或对象),我需要使用Associateve数组(或对象),我不确定您指的是哪个代码块。foreach部分其实并不重要,因为我实际上是在一组dom元素上循环,我需要将类似的项分组在一起,并将它们的值相加。所以对我来说,“key”实际上是一种将相似的项组合在一起,然后将“value”设置为所有这些元素的总和的方法。。。?您将使用一个对象,
{}
。与其描述问题的特征,不如直截了当地提出实际问题?我现在来介绍一下你的新代码块。是的,这就是我要找的,但它似乎不适合我。而不是
array2[index]=值,我需要类似于
array2[index]+=value的东西但它似乎把事情搞砸了,因为我第一次添加值时,键是未定义的,所以结果会是:未定义2.22,而它应该是2.22。此外,数组将包含null:null键/值对。@ragulka根据您最近的评论更新了答案。