例如,我如何实现以下操作,而不需要对数组进行迭代?
var a = [1, 2, 3] * 5; // a should equal [5, 10, 15]
var a = [1, 2, 3] * 5; // a should equal [5, 10, 15]
Array.map()
从IE9起就能够使用了,所以如果您不在意兼容性问题,可以直接使用该方法:
var a = [1, 2, 3].map(function(x) { return x * 5; });
对于 JavaScript 1.8,这是你能做到的最短形式:
var a = [1, 2, 3].map(function(x) x * 5);
如果你需要最大化浏览器兼容性,那么你将不得不接受循环的存在。
无论哪种方式,你都将遍历数组;Array.map()
只是让这个过程不那么明显。.map
会多出一个数组分配。 - user993683var a = [1, 2, 3].map(x => x * 5)
ES6 - var a = [1, 2, 3].map(x => x * 5)
- Dhiraj Barnwalvar a = [1, 2, 3];
var b = a.map(x => x * 5); // <-------
console.log(b); // [5, 10, 15]
// ES6
let array2 = array1.map(x => x * 5);
// ES5
var array2 = array1.map((function (x) { return x * 5; }).bind(this));
for(var i=0; i<a.length; i++) {
a[i] *= 5;
}
for (i in array)
,因为它会在迭代中包括对象的属性,而这些属性实际上并不是数组中的元素 - 它是用于迭代属性的,而不仅仅是数组元素。它在某些情况下可能有效,但会引发问题。 - jfriend00for (var i=0; i < a.length; a[i++]*=5);
- nnnnnnvar a = SIMD.Float32x4(1, 2, 3);
var b = SIMD.Float32x4(5, 5, 5);
SIMD.Float32x4.mul(a, b); // Float32x4[5, 10, 15]
在广泛支持SIMD之前,您需要使用map来解决问题。
var a = [1, 2, 3].map(function(x) { return x * 5; });
这在所有现代浏览器中都得到了很好的支持 [3]。
如文档所述:
map()
方法会根据提供的函数,对调用数组的每个元素进行处理,并返回一个新数组。
在我看来,如果有人想要基于当前数组的输入值创建一个新数组,则更适合使用 .map()
。
然而,如果有人想要就地修改数组,则使用 .forEach()
似乎更好。
在 ES6 中,我们可以使用:
以下代码将就地修改给定数组 arr
(而不创建新数组):
arr.forEach((value, index) => {arr[index] *= 5});
演示:
var arr = [1, 2, 3];
var scalar = 5;
arr.forEach((value, index) => {
arr[index] *= scalar;
});
console.log(arr);
var a = [1,2,3];
var b = a.map(function(x){
return x * 5;
});
alert(b);
var a, i, ii, term;
a = [1,2,3];
term = 5;
for (i=0, ii=a.length; i<ii; i++) {
a[i] = a[i] * term;
}
function scalarMultiply(arr, multiplier) {
for (var i = 0; i < arr.length; i++)
{
arr[i] *= multiplier;
}
return arr;
}
使用方法
var a = scalarMultiply([1, 2, 3], 5);
a
乘以常量 5
:_.map(a, function multiply(x) { return x * 5; });
我认为没有迭代是不可能的。
有了迭代,以下是方法:
let a=[1,2,3,4]
然后,
方法 1:
a=a.map(e=>{return e*5})
方法二:
a.forEach((e,i)=>a[i]=5*e)
map
方法。尽管如此,它并不兼容所有浏览器。https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/map - bennedich