2017-08-17 87 views
-2

如何在數字上對array.length進行分類?在this image我的號碼發生器應按降序排列。使用array.length創建新陣列

我試着用push函數創建一個新數組。我的代碼如下:

var newArray = []; 
newArray.push(myArray.length); 

不幸的是,這是行不通的。我是JavaScript的初學者,我一直無法找到另一種解決方案。

<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
\t <meta charset="UTF-8"> 
 
\t <title>Document</title> 
 
\t <link rel="stylesheet" type="text/css" href="style.css"> 
 
\t <script src="hack.js" defer></script> 
 
\t </head> 
 
<body> 
 
\t <div id="demo" style="width: 500px;border: 1px solid black;"></div> 
 
    <script> 
 
    var myNumbers = ''; 
 
for (var i = 10; i <= 40; i++) { 
 
\t var myArray = []; 
 
\t for (var j = 2; j < i; j++) { 
 
\t \t if (i % j == 0) { 
 
\t \t \t myArray.push(j); \t 
 
\t \t } 
 
\t } 
 
\t myNumbers += "<p>" + i + " number of generators = " + myArray.length + '</p>'; 
 

 
} 
 

 
document.getElementById("demo").innerHTML = myNumbers; 
 
    </script> 
 
</body> 
 
</html>

+0

可以使與每個索引是'[數,發電機]'然後多維陣列只是使用'的Array.sort(功能(A,B){返回[ 1] - b [1]})'然後打印出你的結果。 –

+0

[JavaScript數組克隆]的可能重複(https://stackoverflow.com/questions/27464864/javascript-array-cloning) –

回答

1
var myNumbers = []; 
for (var i = 10; i <= 40; i++) { 
    var myArray = []; 
    for (var j = 2; j < i; j++) { 
     if (i % j == 0) { 
      myArray.push(j);  
     } 
    } 
    var value = { int: i, length: myArray.length, html:"<p>" + i + " number of generators = " + myArray.length + '</p>' } 
    myNumbers.push(value); 

} 
myNumbers.sort(function(a, b){ 
    return b.length - a.length; 
}); 

document.getElementById("demo").innerHTML = myNumbers.map(function(d) { return d['html']; }).join('') 
+0

這不是我想要的東西...在圖片的右側,我寫了我想要的方式 –

+0

啊。 DId沒有看到圖片。您可以將這些內容上傳到問題中,而不是外部鏈接。 –

0

首先,你可以存儲對象的數組數的映射和他們產生計數。然後你可以使用比較器函數對這個數組進行排序。迭代這個數組添加基於這個有序數組的元素。

<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
\t <meta charset="UTF-8"> 
 
\t <title>Document</title> 
 
\t <link rel="stylesheet" type="text/css" href="style.css"> 
 
\t <script src="hack.js" defer></script> 
 
\t </head> 
 
<body> 
 
\t <div id="demo" style="width: 500px;border: 1px solid black;"></div> 
 
    <script> 
 
    var myNumbers = '', myArray = []; 
 
for (var i = 10; i <= 40; i++) { 
 
    var count = 0; 
 
\t for (var j = 2; j < i; j++) { 
 
\t \t if (i % j == 0) { 
 
\t \t \t count++; 
 
\t \t } 
 
\t } 
 
    myArray.push({number: i, generators: count}); 
 
} 
 
myArray.sort(function(a,b){ 
 
    return b.generators - a.generators; 
 
}); 
 
for(var i=0; i<myArray.length; i++) 
 
    myNumbers += "<p>" + myArray[i].number + " number of generators = " + myArray[i].generators + '</p>'; 
 

 
document.getElementById("demo").innerHTML = myNumbers; 
 
    </script> 
 
</body> 
 
</html>