2

我正在尝试对数组中的每个数字求平方,但我的原始代码不起作用。我查找了另一种方法,但我想知道为什么原始代码不起作用。

原始代码:

function(arr) {

    ret= [];            

    for (var i = 0, len = arr.length; i < len; i++) {
        root = Math.sqrt(arr[i]);
        ret.push(root);
    }

    return ret;
}

工作代码:

function(arr) {

    ret= [];

    for (var i = 0, len = arr.length; i < len; i++) {
        ret.push(arr[i] * arr[i]);
    }

    return ret;     
}
4

16 回答 16

19

Math.sqrt给你平方根不是数字的平方。Math.pow与 的第二个参数一起使用2

于 2013-10-28T21:16:46.460 回答
17

那个怎么样 ?

function (arr) {
  return arr.map(function (x) {
    return Math.pow(x, 2);
  });
}

Array.map(func)将该函数应用于地图的每个元素并返回由新值组成的数组。 Math.pow(base, exp)提升base到它的exp力量。

于 2013-10-28T21:18:39.440 回答
4

第一个样本取平方根,而不是平方值。平方你想用

Math.pow(arr[i],2);
于 2013-10-28T21:17:34.020 回答
2

这是如何完成的,使用一个名为的简单方法.forEach

var numbers = [1,2,3,4,5,6,7,8];
numbers.forEach(function(element, index, array){
    array[index] = element* element;
});
console.log(numbers);
于 2017-01-24T08:19:54.383 回答
2

下面是使用ES6 Exponentiation ( )编写的函数**

let arr = [1, 6, 7, 9];
let result = arr.map(x => x ** 2);
console.log(result);

于 2018-12-07T14:11:41.520 回答
1

原始代码取值的平方根。第二个版本是将值与自身相乘(平方)。这些是逆运算

于 2013-10-28T21:17:27.177 回答
1

在javascript中对数组中的每个数字求平方的最佳方法

Array.prototype.square = function () {
    var arr1 = [];
    this.map(function (obj) {
        arr1.push(obj * obj);
    });
    return arr1;
}
arr = [1, 6, 7, 9];
console.log(arr.square());
arr1 = [4, 6, 3, 2];
console.log(arr1.square())
于 2018-12-03T07:15:04.123 回答
0

使用嵌入式for,以获得漂亮的语法:

      var arr=[1,2,3,4] ;
      [for (i of arr) i*i ]; 

      //OUT : > [1,4,9,16]
于 2015-12-16T20:44:57.547 回答
0

声明式编程:)

let list = [1,2,3,4,5,6,7,8,9,10];
let result = list.map(x => x*x);
console.log(result);

于 2017-11-14T06:31:08.747 回答
0

避免不必要的循环,使用map()函数

let array = [1,2,3,4,5];
function square(a){            // function to find square
  return a*a;
}
arrSquare = array.map(square);    //array is the array of numbers and arrSquare will be an array of same length with squares of every number

您可以像这样使代码更短:

let array = [1,2,3,4,5];
arrSquare = array.map(function (a){return a*a;});
于 2018-04-20T14:49:53.050 回答
0
let arr = [1, 2, 3];
let mapped = arr.map(x => Math.pow(x, 2));
console.log(mapped);
于 2020-01-20T17:34:49.903 回答
0

我希望这回答了你的问题

const numbers = [1,2,3,4,5,6,7,8,9];
for(let squareIt of numbers){
    console.log(Math.pow(squareIt, 2));
}
kiss-barnabas解决

于 2021-05-14T06:53:56.410 回答
0

这应该有效。

let kiss=[3,4,5,6];
let arra=[];
for(o in kiss){
   arra.push(kiss[o]*kiss[o])
  

}
console.log(kiss=arra)
于 2021-12-20T22:01:32.167 回答
-1
function squareDigits(num){
  //may the code be with you
  var output = [];
  var splitNum = num.toString();
   for(var i = 0; i < splitNum.length; i++){
     output.push(splitNum.charAt(i))
    }

   function mapOut(){
    var arr = output;
    return arr.map(function(x){
        console.log(Math.pow(x, 2));
    })
   }
   mapOut();
}

squareDigits(9819);

这应该工作

于 2017-03-06T12:49:14.457 回答
-1

这将起作用

const marr = [1,2,3,4,5,6,7,8,9,10]; console.log(marr.map((x) => Math.pow(x, 2)));

于 2018-06-14T09:12:55.917 回答
-1
function map(square,a) {
  var result = [];
  for(var i=0;i<=a.length-1;i++)
   result[i]=square(a[i]);
  return result;
}

var square = function(x) {
   return x*x;
}

var value=[1,2,3,4];
var final= map(square,value);
console.log(final);

你也可以试试上面的代码片段。

于 2018-11-29T07:12:43.880 回答