Как вставить уникальные значения из объекта в массив в 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.info(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.info($scope.depts);
    }

но мой код не вставляет все Dep_key. Любая помощь, пожалуйста?

Спасибо

можешь поделиться логами этого console.info(m);

mehta-rohan 29.09.2018 09:48

спасибо за ответ, я отредактировал вопрос и поделился им в начале

hassanzi 29.09.2018 09:51
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
49
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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.info(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.info($scope.depts);
}

Спасибо большое, работает нормально. У меня просто вопрос, а что, если конечный пользователь хочет снять отметку с отдела, как я могу удалить его из толкаемого массива, большое спасибо

hassanzi 29.09.2018 10:14

У меня нет полного кода передо мной, но я рекомендую вам в этом случае создать специальную функцию и использовать что-то вроде $scope.depts.slice(index,1), где index должен быть тем, который соответствует непроверенному. Не забудьте отметить вопрос как ответ, если он вас устраивает. Спасибо

charly3pins 29.09.2018 10:19

Другие вопросы по теме