Как отфильтровать определенные слова в массиве с помощью Javascript - PullRequest
0 голосов
/ 27 июня 2018

Хорошо, я новичок в Javascript, и я просто пытаюсь разобраться с циклами и узнать, как их использовать. Итак, я придумал упражнение:

  • Я создам Массив со случайными словами, некоторые будут фруктами.
  • Я хочу, чтобы цикл прошел через массив (я зашел так далеко).
  • Далее я хочу отфильтровать только фруктовые слова (которые называются mango, banana и т. Д.) И хочу заменить их словом Fruit

это мой текущий код:

let words = ['mango','desk','phone','banana','airpods', 6 ,'mouse','strawberry',9,'raspberry', 10];

let wordsArrayLength = words.length;

for (let wordLoop = 0; wordLoop < wordsArrayLength; wordLoop++ ) {

}

Так что я подумал, что сделаю .filter(), а затем назову эти имена и заменим их словом Fruit, но я просто застрял сейчас и не знаю, как дальше отсюда. .. Я не мог найти в Интернете ничего, что помогло бы мне в этом, так что, может быть, я действительно не сделал хорошее упражнение для себя?

Также, если у кого-нибудь есть какие-либо советы по поводу того, с чем практиковаться, с Javascript, тогда дайте мне знать. Я думаю о создании головоломки / викторины. Я просто хотел узнать, есть ли решение для того, что я пытаюсь сделать сейчас, или я просто продолжаю.

Ответы [ 3 ]

0 голосов
/ 27 июня 2018

Вы можете сделать это с картой (https://www.w3schools.com/jsref/jsref_map.asp)

Итак, функция map выполняет циклический просмотр каждого элемента в массиве и передает его функции, чтобы вы могли преобразовать это значение

0 голосов
/ 27 июня 2018

Вы можете создать новый массив с именем fruits, в котором будут все фрукты. После этого вы можете перейти к массиву words и проверить, является ли продукт фруктовым или нет, используя fruits.indexOf(). Если это просто заменить это слово на Fruit:

let fruits = ['mango','banana','strawberry','raspberry'];
  let words = ['mango','desk','phone','banana','airpods', 6 ,'mouse','strawberry',9,'raspberry', 10];

words.forEach((word, index) => {
  if(fruits.indexOf(word) !== -1){
     words[index] = 'Fruit';
  }
});
console.log(words);
0 голосов
/ 27 июня 2018

Вы не хотите filter из слов - вы хотите создать массив один к одному с исходным массивом, только с замененными фруктовыми словами. Вместо этого используйте .map.

Вы также можете поместить предопределенные слова фруктов в Set, чтобы уменьшить сложность во время выполнения:

const fruits = new Set(['mango', 'banana', 'strawberry', 'raspberry']);
const input = ['mango','desk','phone','banana','airpods', 6 ,'mouse','strawberry',9,'raspberry', 10];
const mapped = input.map(val => fruits.has(val) ? 'fruit' : val);
console.log(mapped);

Или, используя только методы массива, вы можете проверить, есть ли в массиве фруктов includes значение:

const fruits = ['mango', 'banana', 'strawberry', 'raspberry'];
const input = ['mango','desk','phone','banana','airpods', 6 ,'mouse','strawberry',9,'raspberry', 10];
const mapped = input.map(val => fruits.includes(val) ? 'fruit' : val);
console.log(mapped);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...