2

配列内の各数値を 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 番目の引数と共に使用します2

于 2013-10-28T21:16:46.460 に答える
4

最初のサンプルは、値を 2 乗するのではなく、平方根をとっています。使いたいスクエアへ

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 に答える
1

元のコードは値の平方根をとっています。2 番目のバージョンは、値をそれ自体で乗算 (2 乗) しています。これらは逆演算です

于 2013-10-28T21:17:27.177 に答える
0

forきれいな構文にはembedded を使用します。

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

      //OUT : > [1,4,9,16]
于 2015-12-16T20:44:57.547 に答える
-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 に答える