Member 12998315 Ответов: 2

Как добавить алфавитный порядок в мой список дел.


привет
У меня есть список дел.
он имеет входные данные для выпадающего списка задач и приоритетов.

Задачи должны быть перечислены в порядке сортировки по приоритету ( от срочных до
“Если сможешь"), это уже сделано.
А внутри каждой приоритетной группы в соответствии с лексикографическим порядком-это моя проблема.


мой код на
jsbin



var add = document.getElementById("addButton");
    var task = document.getElementById("Input");
    var list = document.getElementById("list");
    var body = document.querySelector("body");
    var form = document.querySelector("#form");

//Add task, css and UI
    add.addEventListener("click",function () {
       
       if (task.value.length >= 6 &&
            task.value.length <= 42) {

            //Add task to the list
            var newTask = document.createElement("li");
            var x = document.getElementById("prioritySelect").selectedIndex;
            newTask.dataset.priority = document.getElementsByTagName("option")[x].value;
            var all = document.querySelectorAll("li");
            var index = all.length;

            for (var i = 0; i < all.length; i++) {
                if (parseInt(newTask.dataset.priority) < parseInt(all[i].dataset.priority)) {
                    index = i;
                    break;
                }
            }

            list.insertBefore(newTask, all[index]);
            var taskName = document.createElement("h3");
            newTask.appendChild(taskName);
            taskName.innerHTML = task.value;
            var priorSpan = document.createElement("span");
            taskName.appendChild(priorSpan);
            priorSpan.innerHTML = newTask.dataset.priority;
}


Что я уже пробовал:

Я не знаю, что делать.
Я попытался повторить цикл приоритета.
Я пытался и пытался, но не могу решить эту проблему.

2 Ответов

Рейтинг:
2

Member 12998253

я думаю,что вы должны использовать метод массива сортировки..
например, дайте вашему массиву vars имя ключа... например, a, b , c, d и так далее... затем упомяните их чуть выше их значений/. любить

var arr = [{
    key: "a",
    value: urgent
},
{
    key: "d",
    value: not so urgent
},
{
    key: "c",
    value: just imp
},
{
    key: "b",
    value: take your time
}];


теперь расположите их так, как вам хочется...

var order = ["c", "a", "b", "d"];
var sorted = _.sortBy(arr, function(obj){ 
    return _.indexOf(order, obj.key);
});


получайте удовольствие от кодирования...


Member 12998315

Я не могу создать массив, потому что мне нужно перебирать свой список при отправке, и у него уже есть приоритетный порядок, внутри этого порядка я должен упорядочить его в лексикографическом порядке.
вы видели мой код на jsbin?

Рейтинг:
16

Peter Leow

Этот ваш код всегда будет вставлять новую задачу в последний пункт Группы приоритетов:

for (var i = 0; i < all.length; i++) {
    if (parseInt(newTask.dataset.priority) < parseInt(all[i].dataset.priority)) {
        index = i;
        break;
    }
}
Поэтому, чтобы найти его лексикографический порядок в группе приоритетов, добавьте цикл к циклу назад, как это:
for (var j = index - 1; j >= 0; j--) {
    if (parseInt(newTask.dataset.priority) == parseInt(all[j].dataset.priority)) {
        if(task.value.localeCompare(all[j].innerText)==-1) index = j;
    }
}