Javascript 使用Array.sort从HTML元素排序数组

Javascript 使用Array.sort从HTML元素排序数组,javascript,html,arrays,Javascript,Html,Arrays,我正在尝试为期末考试创建一个单词和数字排序程序,但我无法使array.sort与HTML元素一起工作 <textarea name="data" placeholder="Input data here:" class="inputBox" id="dataInput"></textarea> // sorting words //moving HTML input into array f

我正在尝试为期末考试创建一个单词和数字排序程序,但我无法使array.sort与HTML元素一起工作

<textarea name="data" placeholder="Input data here:" class="inputBox" id="dataInput"></textarea>

// sorting words
//moving HTML input into array
function addDataWords() {
//clear dataOutput
  let dataWords = [];
  document.getElementById('dataOutput').innerHTML = '';
//push into array
  dataWords.push(document.getElementById('dataInput').value.split(','));
  console.log(dataWords);
//sort words
  dataWords.sort();
  console.log(dataWords);
  document.getElementById('dataOutput').innerHTML = dataWords;
}

//分类词
//将HTML输入移动到数组中
函数addDataWords(){
//清除数据输出
设dataWords=[];
document.getElementById('dataOutput')。innerHTML='';
//推入阵列
push(document.getElementById('dataInput').value.split(',');
console.log(数据字);
//分类词
dataWords.sort();
console.log(数据字);
document.getElementById('dataOutput')。innerHTML=dataWords;
}
调试器显示HTML元素正在移动到数组中,但是.sort似乎不会对它们进行排序。

问题是
split()
返回数组。然后将该数组作为子数组推送到空的
dataWords
数组中。所以它看起来像:

但是你想要
['word1','word2'…]

只要做:

let dataWords = document.getElementById('dataInput').value.split(',');
函数addDataWords(){
//将逗号分隔的值拆分为数组
让dataWords=document.getElementById('dataInput').value.split(',');
//分类词
dataWords.sort();
console.log(数据字);
document.getElementById('dataOutput')。innerHTML=dataWords.join(',');
}
addDataWords()
foo,bar,2,1

JavaScript函数
.split()
返回一个新数组。
因此,函数的输出类似于:

[['B', 'C', 'B']] // Example
因此,在这种情况下,简单的解决方案是对嵌套数组进行排序

dataWords[0].sort();
或者更好的方法是:

function addDataWords() {
  const dataWords = [];
  document.getElementById('dataOutput').innerHTML = '';

  const dataInput = document.getElementById('dataInput').value.split(','));
  for (let data of dataInput) {
     dataWords.push(data);
  }

  console.log(dataWords);
  document.getElementById('dataOutput').innerHTML = dataWords;
}

“返回一个新数组”。。再说一次,不,不是的,是的!如果不是,那么dataWords[]数组中的数组是什么?不是sort(),而是split()ok。。是的,这很有意义,这不是比较Javascript中数组的正确方法