Фильтрация ключей объекта - PullRequest
0 голосов
/ 23 марта 2020

Как я могу передать ключи объекта в массив, которые являются истинными. Чтобы я мог использовать этот массив для фильтрации?
Пример объекта:

let results = [
      {name: marc, isAlumnus: true, isScholar: true, isTrustee: false},
      {name: franz, isAlumnus: false, isScholar: true, isTrustee: false},
      {name: Hugo, isAlumnus: true, isScholar: true, isTrustee: false},
    ]

И попытка функции!

getActiveStatusGroups (results) {
            let res = [];
            res = results.map((item) => {
                if (item) {
                    res.push('isScholar');
                }
            });
          return res;
        },

let statusArray = getActiveStatusGroup(this.results)

Ответы [ 2 ]

2 голосов
/ 23 марта 2020

Вы можете получить массив имен свойств из Object.keys или массив [name, value] массивов из Object.entries, в зависимости от того, что вы хотите сделать.

Трудно сказать какой вывод вы хотите получить в результате, но, например, он возвращает массив массивов, где внутренние массивы - это имена свойств, для которых значение было истинным:

getActiveStatusGroups(results) {
    return results.map(entry =>
        Object.keys(entry).filter(key => entry[key])
    );
}

Live Пример:

let results = [
    {isAlumnus: true, isScholar: true, isTrustee: false},
    {isAlumnus: false, isScholar: true, isTrustee: false},
    {isAlumnus: true, isScholar: true, isTrustee: false},
];

function getActiveStatusGroups(results) {
    return results.map(entry =>
        Object.keys(entry).filter(key => entry[key])
    );
}

console.log(getActiveStatusGroups(results));
0 голосов
/ 23 марта 2020

Фильтрация довольно проста в JavaScript

Имя метода прямо в заголовке, но вы не смогли его распознать. Используйте filter вместо map. Метод filter() создает новый массив со всеми элементами, которые проходят тест, реализованный предоставленной функцией.

Вот ваш код

let results = [
      {name: marc, isAlumnus: true, isScholar: true, isTrustee: false},
      {name: franz, isAlumnus: false, isScholar: true, isTrustee: false},
      {name: Hugo, isAlumnus: true, isScholar: true, isTrustee: false},
]

getActiveStatusGroups(group) {
  // returns the element if the condition is true
  return results.filter(result => result[group])
}

Вот и все

console.log(getActiveStatusGroups('isAlumnus'))
console.log(getActiveStatusGroups('isScholar'))
console.log(getActiveStatusGroups('isTrustee'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...