Как разбить строковый объект, а затем объединить и добавить в массив - PullRequest
0 голосов
/ 02 ноября 2018

Эта функция addtoTaskList должна разбить полученную задачу на 2 массива (?) Или две задачи, разделенные запятой, затем объединить их и добавить их в массив задач. Поскольку код в настоящее время, он выводит разделенные значения в taskList, но также выводит неразделенный дубликат и очищает список задач после каждой записи, как показано ниже: Duplicate Output

Мне в основном нужна помощь с конкатенацией, я думаю - спасибо!

"use strict";
var $ = function(id) { return document.getElementById(id); };

var tasks = [];

var displayTaskList = function() {
    var list = "";
    // if there are no tasks in tasks array, check storage
    if (tasks.length === 0) {
        // get tasks from storage or empty string if nothing in storage
        var storage = localStorage.getItem("tasks") || "";

        // if not empty, convert to array and store in global tasks variable
        if (storage.length > 0) { tasks = storage.split("|"); }
    }

    // if there are tasks in array, sort and create tasks string
    if (tasks.length > 0) {
       // tasks.sort();
        list = tasks.join("\n");
    }
    // display tasks string and set focus on task text box
    $("task_list").value = list;
    $("task").focus();
};

var addToTaskList = function() {   
    var task = $("task");
    if (task.value === "") {
        alert("Please enter a task.");
    } else {  

        // add task to array and local storage
        var partsOfStr = task.value.split(',');
        tasks = partsOfStr.concat(task.value);

        localStorage.tasks = tasks.join("|");

        // clear task text box and re-display tasks
        task.value = "";
        displayTaskList();
    }
};

var clearTaskList = function() {
    tasks.length = 0;
    localStorage.tasks = "";
    $("task_list").value = "";
    $("task").focus();
};

window.onload = function() {
    $("add_task").onclick = addToTaskList;
    $("clear_tasks").onclick = clearTaskList;    
    displayTaskList();
};

1 Ответ

0 голосов
/ 02 ноября 2018

Вы пытаетесь объединить массив (partsOfStr) со строкой (task.value). Возможно, вы хотели использовать tasks вместо task.value?

tasks = partsOfStr.concat(task.value);

Должно быть:

tasks = tasks.concat(partsOfStr);
...