Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查时未从我的数组中删除的对象_Javascript_Arrays_Angularjs - Fatal编程技术网

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

Javascript 检查时未从我的数组中删除的对象,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我有2个阵列,其中一个将通过APIapirray 第二个数组toggleArray将是我从apiArray 我试图通过selectBtn功能切换数组中的项目和数组中的项目 现在,我可以将项目添加到我的Togglerray中,但是单击同一个按钮不会删除项目,它们会保留在数组中 如果不在数组中,则添加,如果在数组中,则删除,有什么更好的方法进行检查 var vs = $scope; vs.message = "Add and remove objects from array:";

我有2个阵列,其中一个将通过API
apirray

第二个数组
toggleArray
将是我从
apiArray

我试图通过
selectBtn
功能切换数组中的项目和数组中的项目

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

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

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);
    };
var vs=$scope;
vs.message=“从数组中添加和删除对象:”;
vs.Toggleray=[];
var btnInArray=false;
vs.apiArray=[
{name:'AAA'},
{name:'BBB'},
{name:'CCC'}
];
vs.selectBtn=功能(btnObj){
console.log(btnObj.name);
函数checkUpdateToggleTags(对象,列表){
var i;
对于(i=0;i
你把事情弄得太复杂了。要在数组中查找对象,您可以直接使用它,因为它也允许搜索非基本类型。在这种情况下,
selectBtn
方法将变得如此简单:

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

哈哈,是的,我今天编码太长了。。。谢谢