【问题标题】:Making new array with array.length使用 array.length 创建新数组
【发布时间】:2017-08-18 05:38:48
【问题描述】:

如何对array.length 进行数字排序?在this image 我的数字生成器应该按降序排列。

我尝试使用 push 函数创建一个新数组。我的代码如下:

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

不幸的是,这不起作用。我是 javascript 的初学者,我还没有找到其他解决方案。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<link rel="stylesheet" type="text/css" href="style.css">
	<script src="hack.js" defer></script>
	</head>
<body>
	<div id="demo" style="width: 500px;border: 1px solid black;"></div>
  <script>
    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);	
		}
	}
	myNumbers += "<p>" + i + " number of generators = " + myArray.length + '</p>';

}

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

【问题讨论】:

  • 您可以创建一个多维数组,每个索引为[number, generator],然后只需使用array.sort(function(a,b) { return a[1] - b[1] }),然后打印出您的结果。
  • JavaScript array cloning的可能重复

标签: javascript


【解决方案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('')

【讨论】:

  • 这不是我想要的......在图片的右侧,我写我想要的方式
  • 啊。没看到图。您可以将它们上传到问题中,而不是外部链接。
【解决方案2】:

首先,您可以将数字及其生成器计数的映射存储在对象数组中。然后,您可以使用比较器函数对该数组进行排序。对这个数组的迭代基于这个排序的数组添加元素。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<link rel="stylesheet" type="text/css" href="style.css">
	<script src="hack.js" defer></script>
	</head>
<body>
	<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;
	for (var j = 2; j < i; j++) {
		if (i % j == 0) {
			count++;
		}
	}
    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>

【讨论】:

    猜你喜欢
    • 2022-01-18
    • 2019-11-05
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多