Javascript удаляет вхождения элемента путем сопоставления условия

#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 или нет.