2013-10-28 23 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);

相關問題