Я пытаюсь сортировать все элементы в массиве items
, чтобы следовать порядку, указанному в string
. Я пытаюсь получить results
бытьСортировка массива в соответствии с заданным порядком
["first", "second", "third", "last"]
после сортировки. Начальный массив имеет рандомизированный порядок.
var string = "first;second;third;last",
items = ["third", "first", "last", "second"],
result = [],
lastpos = 0,
lastinsert = 0;
for (var i = 0; i < items.length; i++) {
\t var mypos = string.indexOf(items[i]),
\t insertat;
\t if (mypos > lastpos) {
\t \t insertat = lastinsert
\t } else {
\t \t insertat = lastinsert + 1
\t }
\t result.splice(insertat, 0, items[i]);
\t lastpos = mypos;
}
document.getElementById("output").innerHTML = JSON.stringify(result);
<pre id="output"></pre>
Я не просить, чтобы иметь анализ текста для сортировки массива. Массив должен просто следовать порядку элементов в переменной string
.
Я понятия не имею, что вы спрашиваете – bencripps
То же самое. Можете ли вы повторно написать свой фрагмент, используя имена, которые будут иметь смысл? Извините, мне просто сложно отслеживать «a: first», «b: last» и т. Д. – Eclecticist
Я все равно запутаюсь. «Элементы» содержат точно такой же набор значений, что и «строка»? Если да, то зачем вообще разбираться? Просто используйте 'string'. BTW, Javascript имеет метод 'sort' на' Array.prototype'. –