2013-10-28 20 views
0

我试图对数组中的每个数字进行平方,并且我的原始代码无法工作。我查了另一种方式来做到这一点,但我想知道为什么原始代码不起作用。在javascript中排列数组中的每个数字

原始代码:

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;  
} 
+1

那么,* *为什么没有工作? (请说明“没有工作”。)请注意,sqrt是“平方根”,与“平方”不同。观察一个简单的'Math.sqrt(10)'和'10 * 10'应该明确指出“没有工作”。 – user2864740

+4

Math.sqrt - 是平方根。参见Math.pow –

+0

OP使用了词根,所以它看起来像是故意的。 –

回答

13

Math.sqrt给你平方根不是正方形一些。使用Math.pow,第二个参数为2

1

原始代码取值的平方根。第二个版本将数值与自身相乘(将其平方)。这些是相反的操作

4

第一个样本采取平方根,而不是平方值。要广场想要使用

Math.pow(arr[i],2); 
10

那怎么样?

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

Array.map(func)将该函数应用于地图的每个元素,并返回的新值所组成的阵列。 Math.pow(base, exp)base提升为其exp的功率。

0

使用嵌入式for,为漂亮的语法:

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

     //OUT : > [1,4,9,16] 
+1

尽管这可能会回答这个问题,但更多的上下文会有所帮助。 – IInspectable

+0

更新!并感谢您的注意 –

+0

这是无效的JavaScript – naomik

1

这里是如何可以做到,使用一种称为.forEach

var numbers = [1,2,3,4,5,6,7,8]; 
numbers.forEach(function(element, index, array){ 
    array[index] = element* element; 
}); 
console.log(numbers); 
-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); 

简单的方法,这应该工作

+0

我想你误解了这个问题。你在输入每个数字的平方,这不是OP所要求的。 –

+0

@PatrickHund标题清楚地显示了“在JavaScript中以数组方式排列每个数字”。我假设每个数字都是输入的数字。 –

0

声明式编程:)

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

相关问题