#javascript #reactjs
#javascript #reactjs
Вопрос:
У меня есть два массива в ReactJS следующим образом
let document = [
{ text: 'Document 1', value: 'abcd' },
{ text: 'Document 2', value: 'efgh' }
]
let filterTypes = [{ value: 'abcd', id: 1 }]
Как сгенерировать отфильтрованный массив из этого в ReactJS, содержащий только один объект со значением abcd?
Ответ №1:
Вы могли бы использовать Array.prototype.some()
метод внутри Array.prototype.filter()
метода. Некоторый метод возвращает логическое значение, если хотя бы один элемент в массиве проходит проверку заданной функцией обратного вызова.
const doc = [
{ text: 'Document 1', value: 'abcd' },
{ text: 'Document 2', value: 'efgh' },
];
const filterTypes = [{ value: 'abcd', id: 1 }];
const ret = doc.filter((x) => filterTypes.some((y) => y.value === x.value));
console.log(ret);
Ответ №2:
const docArray = [
{ text: 'Document 1', value: 'abcd' },
{ text: 'Document 2', value: 'efgh' },
];
const filterTypes = [{ value: 'abcd', id: 1 }];
console.log('-----non-matched----');
const nonmatched = docArray.filter(doc => filterTypes.findIndex(filt=> filt.value === doc.value));
console.log(nonmatched);
console.log('------matched----');
const matched = docArray.filter(doc => filterTypes.findIndex(filt=> filt.value !== doc.value));
console.log(matched);