在Javascript中编写以下PHP for循环(修改数组)的最有效方法是什么?

时间:2017-05-30 19:35:47

标签: javascript php

我正在尝试学习如何以最有效的方式优化javascript ...

我认为尽可能避免创建对属性的引用是一种好习惯。

在PHP中,如果我有这个数组:

$dataArray = [4,6,8];

要修改此数组的值,我可以编写一个foreach循环来返回对该数组中值的引用,而不是副本,使用&符号,如下所示:

foreach ($dataArray as &$value) {
 $value = $value / 2;
}
unset($value); // if im not mistaken, this is just cleanup

// $dataArray will now = [2,3,4]

以下是在Javascript中实现相同结果的最有效方法吗?

var dataArray = [4,6,8];

for (i = 0; i < dataArray.length; i++) { 
    dataArray[i] = dataArray[i] / 2;
}

// if so, is there anything i should do to clean up the for loop to avoid memory leaks?

1 个答案:

答案 0 :(得分:0)

您可以将Array#forEach与索引和数组的参数一起使用。然后为具有相同索引的项目分配新值。

&#13;
&#13;
var array = [4, 6, 8];

array.forEach(function (_, i, aa) {
    aa[i] /= 2;
});

console.log(array);
&#13;
&#13;
&#13;

为了完整起见,您可以使用Array#map生成一个新数组并将其分配给变量。

&#13;
&#13;
var array = [4, 6, 8];

array = array.map(function (a) {
    return a / 2;
});

console.log(array);
&#13;
&#13;
&#13;