gpt4 book ai didi

javascript - 检查时对象未从我的数组中删除

转载 作者:行者123 更新时间:2023-11-30 12:24:42 24 4
gpt4 key购买 nike

http://plnkr.co/edit/b1v87pUEykOJnM4HLFKz?p=preview

enter image description here

我有 2 个数组,一个将通过 API apiArray

第二个数组 toggleArray 将是我从 apiArray 中选择的项目的容器

我正在尝试通过 selectBtn 函数切换哪些项目在数组中和数组外。

现在我可以将项目添加到我的 toggleArray 中,但是单击同一个按钮不会删除该项目,它们会保留在数组中。

有什么更好的检查方法,如果不在数组中则添加,如果在数组中则删除?

var vs = $scope;
vs.message = "Add and remove objects from array:";
vs.toggleArray = [];
var btnInArray = false;

vs.apiArray = [
{ name: 'AAA' },
{ name: 'BBB' },
{ name: 'CCC' }
];

vs.selectBtn = function(btnObj) {
console.log(btnObj.name);

function checkUpdateToggleTags(obj, list) {
var i;
for (i = 0; i < list.length; i++) {
if (list[i] === obj) {
return true;
}
}
return false;
}

btnInArray = checkUpdateToggleTags(btnObj, vs.toggleArray);

if (btnInArray) {

// check the toggleArray and if obj from listToDelete is there
// remove that obj from toggleArray
for(var i = 0; i < vs.toggleArray.length; i++) {
var obj = vs.toggleArray[i];

if (vs.toggleArray.indexOf(obj.term) !== -1) {
vs.toggleArray.splice(i, 1);
i--;
}
}

} else {
vs.toggleArray.push(btnObj);
}

console.log(btnInArray);
console.log(vs.toggleArray);
};

最佳答案

你把一切都搞得太复杂了。要在数组中查找对象,您可以使用 Array.prototype.indexOf直接,因为它也允许搜索非原始类型。在这种情况下,selectBtn 方法将变得如此简单:

vs.selectBtn = function(btnObj) {
var index = vs.toggleArray.indexOf(btnObj);
if (index !== -1) {
vs.toggleArray.splice(index, 1);
}
else {
vs.toggleArray.push(btnObj);
}
};

演示: http://plnkr.co/edit/34KVRAAhuMdVteO9S1Qn?p=preview

关于javascript - 检查时对象未从我的数组中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29834885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com