【问题标题】:How to sort number in a <textarea> separated by comma in JavaScript?如何在 JavaScript 中以逗号分隔的 <textarea> 中对数字进行排序?
【发布时间】:2015-01-24 10:11:21
【问题描述】:

我有一个简单的文本区域,我输入的内容如下:1,7,5,2,30
然后我将数字放入数组中,当我尝试对数组进行排序时,它实际上将 30 分为“3”和“0”。并给我结果:0,1,2,3,5,7。
我想要的是:1,2,5,7,30。如何解决这个问题? 谢谢。

这是代码:

var textArea = document.getElementById("myTextArea");

var array=[];
var sortedArray=[];

var i=j=len=0;

myButton.onclick = function () {
myFunc(); 
}

function myFunc() {
array = textArea.value;

for(i=0,len=array.length ; i<len ; i++) {
    if(array[i] != ",") {
        sortedArray[j] = array[i];
        ++j;
    }
}

console.log( sortedArray.sort(function (a,b) {
    return a-b;
    }) ); 
}

【问题讨论】:

  • 显示您的代码。可能是一个小提琴?
  • 请始终包含您编写的相关代码sn-ps。

标签: javascript arrays sorting input numbers


【解决方案1】:

这是我的解决方法:

var textArea, myButton;

textArea = document.getElementById("myTextArea");
myButton = document.getElementById("myButton");

myButton.onclick = function () {
    console.log(myFunc());
}

function myFunc() {
    var values, sorted, i;

    values = textArea.value.split(',');
    for (i = 0; i < values.length; i++) {
        values[i] = parseInt(values[i], 10);
    }

    sorted = values.sort(function (a, b) {
        return a-b;
    });

    return sorted;
}

myFunc的解释:

  • 使用 split 方法将 textarea 的值转换为数组
  • 这些值被转换为整数,因此可以以有意义的方式对其进行排序
  • 使用自定义排序函数对值进行排序(默认排序算法仅适用于排序字符串)

【讨论】:

  • 感谢 aaronk6,我完全忘了使用 split() 。然后再次不需要 parsInt ,使用 array.split 后我们可以 sort() 数字:)
  • 不依赖隐式转换更安全。如果你想对一个值执行算术运算,请确保它是一个数字,而不是一个字符串。否则,可能会发生意想不到的事情。关于这个话题有一个有趣的谈话:destroyallsoftware.com/talks/wat
猜你喜欢
  • 2021-12-06
  • 2020-03-14
  • 2018-05-19
  • 1970-01-01
  • 2017-07-17
  • 1970-01-01
  • 2016-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多