如何检查Object中键的值并在if语句中使用它? JavaScript

问题描述 投票:0回答:2

我是一个真正的初学者,并且是JavaScript的狂热者。我需要帮助。我的以下代码有问题:

if (newTask.done === false) {
        newTask = doneArray.push({
            id: doneArray.length,
            description: clickedTask.textContent,
            done: false
        });
    } else {
    removeTask = doneArray.splice(newTask.id, 1);
    };

我需要检查我的对象是否在完成的[[key中具有falsetrue value。当新任务为false时,我想将其push放入我的Array,如果不是,则将其从我的Array remove中删除。我不知道如何获取id的值并在if statement中使用它。然后将对象中的该值更改为true。我不知道,也许有更好的方法可以使它工作而不删除整个代码。这是完整的代码:codepen.io

javascript arrays object if-statement
2个回答
0
投票
尝试这样的事情。 ..

if (newTask.done === false) { newTask = doneArray.push({ id: doneArray.length, description: clickedTask.textContent, done: false }); } else { for(let i = 0; i < doneArray.length; ++i){ if(doneArray[i].id == newTask.id) removeTask = doneArray.splice(i, 1); break; } } };

但是,每次从数组中删除一个对象时,其长度都会变小,从而导致多个具有相同ID的对象。这意味着您将不得不决定执行删除优先操作或删除阵列的所有操作。除非是有意为之,否则我会使用其他ID(例如会不断增加的计数器)。 

编辑-也可能是长度从1开始,数组索引从0开始。因此,如果删除了错误的数字,则必须考虑到这一点。


0
投票
这里是一种简单的方法,应该可以帮助您实现目标。检查评论以获取详细信息,如果不清楚,请发表评论:

// Here is an array containing 3 new tasks const allTasks = [{ id: 0, description: 'desc 1', done: true }, { id: 1, description: 'desc 2', done: false }, { id: 2, description: 'desc 3', done: true }]; // Here is an function to get a new array of only NOT DONE tasks // We achieve this by simply using Array.prototype.filter method const filterDoneTasks = arr => arr.filter(task => !task.done); const pendingTasks = filterDoneTasks(allTasks); console.log(pendingTasks);
© www.soinside.com 2019 - 2024. All rights reserved.