#javascript
#javascript
Вопрос:
У меня есть arrray, как показано ниже:
var testArr = [ "1,A", "2,B", "1,D", "3,A" ]
Я хотел бы получить результат в виде
var result = [ "1,A", "2,B", "3,A" ]
Я пытался использовать filter, но не могу получить результат. Может ли кто-нибудь, пожалуйста, помочь мне в этом?
Комментарии:
1. Чтобы уточнить, находятся ли эти строки в массиве? Итак: «1, A» и «2, B» являются строками? Вы хотите удалить только строку «1, D»?
2. const result = testArr.filter(el => el !== «1, D»)
3. какое условие?
4. Да, это строка @Sebastian
5. Я хотел бы удалить все элементы, которые имеют «1» в массиве, кроме первого вхождения item @Nick
Ответ №1:
const testArr = ['1,A', '2,B', '1,D', '3,A'];
const result = testArr.reduce((val, cur) => {
if (!val.some((v) => v.includes(cur[0]))) {
val.push(cur);
}
return val;
}, []);
console.log(result);
Ответ №2:
var newra = oldra.filter(compare_function);
Вышеупомянутая функция ‘filter’ создает новый пустой массив и перебирает элементы в oldra. Если значение элементов при передаче в compare_function(element_value) возвращает значение true, оно будет добавлено в новый массив, в противном случае оно будет пропущено. Функция filter продолжает перебирать старый массив, создавая новый массив, пока все элементы не будут обработаны. Затем функция фильтра возвращает новый массив.
Функция compare_function(element_value) ожидает, что ей будет передано значение элемента массива. Программист выполняет некоторые вычисления для element_value и возвращает значение true или false на основе этого вычисления в зависимости от того, должно ли оно быть включено в newra или нет.