显示数组,其中包含

时间:2015-09-12 20:42:31

标签: javascript arrays

我有一个带有一些数值的数组。我想显示它们,但我还有一个用户输入,应该在数组中的相应元素之后显示。我的方法很好,但看起来真的过于复杂。我创造了一个小提琴:

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元素是大于还是小于输入,然后将它们全部加在一起并显示它。

我怎样才能更好更干净?

编辑:我发现我的代码中有一个错误,因为它跳过了数组中的一个元素

3 个答案:

答案 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,只需对代码进行最少的编辑。