построить массив только из одного свойства при выполнении условия - PullRequest
0 голосов
/ 09 июля 2020
• 1000 Я хочу, чтобы инструменты были заполнены только perm.tool. Возможно ли это?

пример:

permissions = 
[ 
{ 
    state: 'NJ', 
    tool: 'email'
}, 
{ 
    state: 'MA', 
    tool: 'print'
}, 
{ 
    state: 'NJ', 
    tool: 'submit claim'
}, 
]

Когда state = 'NJ', я хочу получить:

tools = ['email', 'submit claim']

Ответы [ 4 ]

2 голосов
/ 09 июля 2020

Вы хотите уменьшить

let tools = permissions.reduce((results, perm) => {
  if (perm.state === state) {
    results.push(perm.tool);
  }
  return results;
}, []);
0 голосов
/ 09 июля 2020
let tools = (state) => {
  return (permissions.reduce((acc, rec) => {
  if (rec.state === state) {
    return [...acc, rec.tool]
  }
    return [...acc]
  }, [])
  )
}
0 голосов
/ 09 июля 2020

Вот решение:

const permissions = [ 
  { 
      state: 'NJ', 
      tool: 'email'
  }, 
  { 
      state: 'MA', 
      tool: 'print'
  }, 
  { 
      state: 'NJ', 
      tool: 'submit claim'
  }
];

function getTools(state) {
   const tools = [];
   permissions.forEach(perm => {
     if(perm.state == state) {
       tools.push(perm.tool)
     }
   });
   return tools;
}

console.log(getTools('NJ'));
0 голосов
/ 09 июля 2020

Вероятно, вы ищете map после filter:

let tools = permissions
                .filter(perm => perm.state === state)
                .map( el => el.tool );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...