热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在javascript中将数组的每个成员乘以标量?-HowdoImultiplyeachmemberofanarraybyascalarinjavascript?

Forexample,howdoIachievethefollowingwithoutiteratingoverthearray?例如,如何在不迭代数组的情况下实现以下功能?

For example, how do I achieve the following without iterating over the array?

例如,如何在不迭代数组的情况下实现以下功能?

var a = [1, 2, 3] * 5;  // a should equal [5, 10, 15]

9 个解决方案

#1


29  

Array.map() is available to IE users as of IE9, so if you don't care about compatibility at all you can use this:

从IE9开始,IE用户可以使用Array.map(),所以如果您根本不关心兼容性,可以使用:

var a = [1, 2, 3].map(function(x) { return x * 5; });

For Javascript 1.8, this is as short as you can go:

对于Javascript 1.8,这是最短的:

var a = [1, 2, 3].map(function(x) x * 5);

If you need maximal browser compatibility, you'll have to put up with a loop.

如果您需要最大的浏览器兼容性,您将不得不忍受一个循环。

Either way you'll be iterating over the array; Array.map() just makes it less obvious you're doing so.

无论哪种方式,你都会迭代数组; Array.map()只是让你不那么明显。

#2


13  

for(var i=0; i

#3


9  

Fast-forward to 2016, when support for ECMAScript 6 is getting better:

快进到2016年,当ECMAScript 6的支持越来越好时:

If you use babeljs or TypeScript in your project to cross-compile your code to ES5 or you don't need to support old browsers and Internet Explorer (Edge has support), you can use ES6 arrow functions:

如果在项目中使用babeljs或TypeScript将代码交叉编译为ES5,或者您不需要支持旧浏览器和Internet Explorer(Edge支持),则可以使用ES6箭头函数:

var a = [1, 2, 3];

var b = a.map(x => x * 5);
//            ^^^^^^^^^^

console.log(b);   // [5, 10, 15]

Arrow functions are a syntactic sugar for an inline function with lexical this binding:

箭头函数是内联函数的语法糖,具有词法结合:

// ES6
array2 = array.map(x => x * 5);

// ES5
array2 = array.map((function (x) { return x * 5; }).bind(this));

#4


4  

Ecmascript 2016 (ES7) defines SIMD mathematics which allow to do multiplications like the one you desire faster and easier. However, as of today there is very little browser support for SIMD (only Firefox nightly builds support this) [1], [2]. This is how it will look like:

Ecmascript 2016(ES7)定义了SIMD数学,它允许像你想要的那样快速和简单地进行乘法运算。但是,到目前为止,浏览器对SIMD的支持很少(只有Firefox夜间构建支持这一点)[1],[2]。这是它的样子:

var a = SIMD.Float32x4(1, 2, 3);
var b = SIMD.Float32x4(5, 5, 5);
SIMD.Float32x4.mul(a, b);  // Float32x4[5, 10, 15]

Until there will be widespread support for SIMD you'd have to resort to using map

在对SIMD提供广泛支持之前,您不得不求助于使用地图

var a = [1, 2, 3].map(function(x) { return x * 5; });

which is nicely supported by all modern browsers [3].

所有现代浏览器都很好地支持[3]。

#5


2  

You can use .map but you also have to create a new variable to throw the new values in:

您可以使用.map,但您还必须创建一个新变量以将新值抛出:

var a = [1,2,3];

var b = a.map(function(x){
    return x * 5;
});

alert(b);

#6


1  

var a, i, ii, term;

a = [1,2,3];
term = 5;

for (i=0, ii=a.length; i

#7


1  

You can try this:

你可以试试这个:

function scalarMultiply(arr, multiplier) {
   for (var i = 0; i 

USAGE

用法

var a = scalarMultiply([1, 2, 3], 5);

#8


0  

As stated in Docs:

如文件中所述:

The map() method creates a new array with the results of calling a provided function on every element in the calling array.

map()方法创建一个新数组,其结果是在调用数组中的每个元素上调用提供的函数。

In my opinion, .map() is more suitable if someone wants to create a new array based on input values from the current array.

在我看来,如果有人想根据当前数组的输入值创建一个新数组,.map()更合适。

However, if someone wants to modify the array in place, .forEach() seems a better choice.

但是,如果有人想要修改数组,.forEach()似乎是一个更好的选择。

In ES6 we may use:

在ES6中,我们可以使用:

  • Array.prototype.forEach()
  • Array.prototype.forEach()
  • Arrow functions
  • 箭头功能

Following code will modify a given array arr in place (without creating a new one):

以下代码将修改给定的数组arr(不创建新数组):

arr.forEach((value, index) => {arr[index] *= 5});

Demo:

演示:

var arr = [1, 2, 3];
var scalar = 5;

arr.forEach((value, index) => {
    arr[index] *= scalar;
});
console.log(arr);

#9


0  

Using Lodash's map function, this returns the original array a, multiplied by the constant 5:

使用Lodash的map函数,返回原始数组a,乘以常量5:

_.map( a, function multiply(x){ return x*5; } );

推荐阅读
  • 前言小伙伴们大家好。从今天开始我们将从 ... [详细]
  • 震惊,正儿八经的网页居然在手机上这样显示!
    本篇文章所描述的,是网页移动端开发中的一些概念,以及一些常用标签~一、像素基本知识设备物理像素:设备上的一个像素点设备无关像素࿱ ... [详细]
  • 1.webkit内核中的一些私有的meta标签,这些meta标签在开发webapp时起到非常重要的作用(1) ... [详细]
  • ConsumerConfiguration在kafka0.9使用JavaConsumer替代了老版本的scalaConsumer。新版的配置如下:bootstrap. ... [详细]
  • rust编程这篇文章是关于我通过解决Twitch上尚未解决的所有CtCI问题来学习Rust的经验。英国科学博物馆集团AdaLovelace的肖像Rust徽标,由Moz ... [详细]
  • 小编给大家分享一下TypeScript2.7有什么改进,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收 ... [详细]
  • HTML5Canvas图像模糊如何解决
    本文主要和大家介绍HTML5Canvas图像模糊完美解决办法,需要的朋友可以参考下,希望能帮助到大家。1、最近在用h5的canvas画动画,发现图像 ... [详细]
  • 我试图在Angular2应用程序中使用元素调整大小检测器库(https:github.comwnrelement-resize-detector).根据我有限的JS模块知识,该库似 ... [详细]
  • 开发笔记:史上最强TypeScript脚本介绍
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了史上最强TypeScript脚本介绍相关的知识,希望对你有一定的参考价值。Type ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 判断数组是否全为0_连续子数组的最大和的解题思路及代码方法一_动态规划
    本文介绍了判断数组是否全为0以及求解连续子数组的最大和的解题思路及代码方法一,即动态规划。通过动态规划的方法,可以找出连续子数组的最大和,具体思路是尽量选择正数的部分,遇到负数则不选择进去,遇到正数则保留并继续考察。本文给出了状态定义和状态转移方程,并提供了具体的代码实现。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • (转载)IplImage、CvMat等图像处理库的使用方法详解
    opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,M ... [详细]
author-avatar
奇丶葩故事会
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有