如何在Angularjs中将唯一值从对象插入到数组

时间:2018-09-29 07:44:28

标签: javascript angularjs

我有以下对象

0: {Dep_key: 1, sex: 2, dep: "HR department", Staff_name: "Hassan", 
    Staff_Key: 782, …}
1: {Dep_key: 1, sex: 2, dep: "sales department", Staff_name: "Ahmed", 
    Staff_Key: 813, …}
2: {Dep_key: 1, sex: 2, dep: "Marketing", Staff_name: "Hossam", 
    Staff_Key: 817, …}

,我想将Dep_key(s)的唯一值插入数组。 我做了

$scope.leftdept = function (m) {

        console.log(m);

        for (i = 0; i < m.length; i++) {
            if ($scope.depts.indexOf(m[i].Dep_key) === -1) {
                $scope.depts.push(m[i].Dep_key);
            }
            else {
                var index = $scope.depts.indexOf(m);
                $scope.depts.splice(index, 1);
            }
        }

       console.log($scope.depts);
    }

但我的代码未插入所有Dep_key。有什么帮助吗?

谢谢

1 个答案:

答案 0 :(得分:1)

如果只需要唯一的Dep_key,则可以删除else块 您是在第一次出现的Dep_key块中插入“新” if,但是如果循环中存在相同的Dep_key,请在else子句中插入您正在删除它。当数组中有2个Dep_key时,将永远不会在输出中获得它。另外,您将获得var index = $scope.depts.indexOf(m);数组的m而不是m[i],但是正如我所说的,您只能拥有if并且代码应该可以工作

$scope.leftdept = function (m) {

    console.log(m);

    for (i = 0; i < m.length; i++) {
        if ($scope.depts.indexOf(m[i].Dep_key) === -1) {
            $scope.depts.push(m[i].Dep_key);
        }
    }

   console.log($scope.depts);
}