Сравните два массива и отфильтруйте их javascript - PullRequest
1 голос
/ 23 марта 2020

В основном у меня есть два массива, которые я использую для конфигурации кнопок.

Первый массив, который определяет, сколько кнопок должно быть в порядке.

buttonGroups: [ 0, 2 ]

Другой массив объектов, который говорит о фактических кнопках.

    buttons = [
    {
        buttonLabel: 'label1',
        cond1: true,
        cond2: false
    },
    {
        buttonLabel: 'label2',
        cond1: true,
        cond2: false
    },
    {
        buttonLabel: 'label3',
        cond1: false,
        cond2: true
    }
];

buttonGroups - это массив конфигурации. Если он имеет только [0, 1], тогда будут существовать первые две кнопки. Если buttonGroups имеет только [0, 3], мы должны иметь первую и третью кнопки в массиве buttons.

Это то, что я пробовал

buttonGroups.map((payload1, index1) => {
    buttons .map((payload2, index2) => {
        if(index1 === index2){
            //Display Here only the matched index from ButtonGroups
            console.log(payload2)
        }
    })
})

Это дает первый индекс массив кнопок. Как получить совпавший массив кнопок?

Ответы [ 3 ]

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

Вот вам go с решением

var buttonGroups = [ 0, 2 ];


var buttons = [
  {
    buttonLabel: 'label1',
    cond1: true,
    cond2: false
  },
  {
    buttonLabel: 'label2',
    cond1: true,
    cond2: false
  },
  {
    buttonLabel: 'label3',
    cond1: false,
    cond2: true
  }
];

var filteredButtons = buttonGroups.map(item => {
  return buttons[item];
});

console.log(filteredButtons);

filteredButtons вернет отфильтрованные кнопки, которые вы можете визуализировать.

1 голос
/ 23 марта 2020

Вы можете перебрать buttonGroups и получить результат:

buttonGroups.map(button => {return buttons[button]})
0 голосов
/ 23 марта 2020

Используйте filter метод.

const filterBtn = buttons.filter((btn,index) => buttonGroups.includes(index));
...