我有一个带有一些数值的数组。我想显示它们,但我还有一个用户输入,应该在数组中的相应元素之后显示。我的方法很好,但看起来真的过于复杂。我创造了一个小提琴:
http://jsfiddle.net/sjoy8p59/1/
var numbers = [2, 4, 8, 12, 42, 120, 612, 69];
var input = 32;
var flag = false;
var output = "";
for (i = 0; i < numbers.length; i++) {
if (numbers[i] < input) {
output += numbers[i]+", ";
} else {
if (flag == false) {
output += input + ", ";
flag = true;
} else {
output += numbers[i]+", ";
}
}
}
document.getElementById("output").innerHTML = output;
因此32
中的input
值应显示在数组之后12
之后和42
之前。我使用for循环和带有if子句的布尔值来检测Array元素是大于还是小于输入,然后将它们全部加在一起并显示它。
我怎样才能更好更干净?
编辑:我发现我的代码中有一个错误,因为它跳过了数组中的一个元素
答案 0 :(得分:2)
<强> Working fiddle 强>
您可以使用push()
将输入添加到数组,并使用简单函数sortNumber()
对其进行排序。
JS:
var numbers = [2, 4, 8, 12, 42, 120, 612, 69];
var input = 32;
numbers.push(input); //add 32 to the array
function sortNumber(a,b) {
return a - b;
}
numbers.sort(sortNumber); //Sort Array
document.getElementById("output").innerHTML = numbers.join(","); //Display result
var numbers = [2, 4, 8, 12, 42, 120, 612, 69];
var input = 32;
numbers.push(input); //add 32 to the array
function sortNumber(a,b) {
return a - b;
}
numbers.sort(sortNumber);
alert(numbers.join(","));
希望这有帮助。
答案 1 :(得分:2)
我只是对它们进行排序:
var numbers = [2, 4, 8, 12, 42, 120, 612, 69];
var input = 32;
numbers.push(input)
numbers.sort(function(a,b){return a-b});
document.getElementById("output").innerHTML = numbers.join(', ');
<div id="output"></div>
答案 2 :(得分:0)
https://jsfiddle.net/sjoy8p59/3/
var numbers = [2, 4, 8, 12, 42, 120, 612, 69];
var input = 32;
var flag = false;
var output = "";
for (i = 0; i < numbers.length; i++) {
if (numbers[i] < input || flag == true) {
output += numbers[i]+", ";
} else {
output += input + ", ";
flag = true;
i--
}
}
document.getElementById("output").innerHTML = output;
虽然排序方法看起来更干净,但我编辑了你的jsfiddle,只需对代码进行最少的编辑。