Как вставить уникальные значения из объекта в массив в Angularjs - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть следующий объект

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 голосов
/ 29 сентября 2018

Если вам нужен только уникальный 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...