angularjs数组去重

clipboard.png
如图,当上面我输了“衢州”之后,下面的衢州如何消失?
上下分别是两个数组。
下面的推荐关键词是一加载出来之后出现的。
我已经做了点击下面的关键词能够上去,并且自身消失

$scope.addSgTag = function (item) {
        $scope.tags.push(item);
        $scope.suggestTags.splice($.inArray(item, $scope.suggestTags), 1)
    };

 $scope.suggestTags = [];
 $scope.tags = [];
 $http.get(url).success(function(data){
            $scope.suggestTags = data;
            console.log(data);
            angular.forEach(data, function(value) {
                console.log(value.name);
            });
        });

tags里面是我可以通过自己输入去改变这个数组的,我变化完之后如何与加载出来的【推荐关键词】进行对比,如果我输入了下面有的,下面就自动去除?

阅读 8.3k
3 个回答

业务就不帮你写了,只是帮你弄那个“去重”吧,实际上找到它在另一个数组中的位置。

直接用 https://developer.mozilla.org... 就好了,有了index,你可以加个字段管理展示或隐藏,或者直接splice删除也行

// 模仿你的地名map
var map = [{ name: '2333', id: '1' }, { name: '666', id: '2' }, { name: '777', id: '3' }, { name: '888', id: '4' }];

// 自己输入后会得到一个数组的最后一个元素
var target = { name: '777', id: '3' };

var index = map.findIndex(function(v){
  return target.id === v.id;
});

map.splice(index, 1);

谢邀~

点击的时候remove掉dom,
arr.splice(1,1);//arguments[]: 下标(自己获取到index), 长度

只是你输入并删除推荐的这部分逻辑:
-当你输入之后需要一个结束动作表明用户已经输入完成,一般有blur,回车,change和指定时间间隔。个人比较喜欢用回车。
-回车的事件里,在数组里查询输入的内容,如果存在就删除。
-当删除文本框的内容,直接把删除的选项push到推荐数组中。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题