Сортировка предложения по количеству гласных в слове и индексация слева, используя javaScript - PullRequest
0 голосов
/ 29 января 2020

Пример предложения: «Моя страсть состоит в том, чтобы стремиться к достижению моей цели - вся идея»

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

Спасибо за помощь заранее.

Ответы [ 3 ]

1 голос
/ 29 января 2020

Может быть, вы можете попробовать этот код ниже:

let string = "My passion is to work towards my goal is the whole idea";
let myarr = string.split(' ');


function mostWolves(word) {
  let count = 0;
  for(let i=0; i < word.length; i++) {
    let x = word[i].toLowerCase();
    if (x === 'a' || x === 'e' || x === 'i' || x === 'o' || x === 'u'){
      count++;
    }
  }
  return count;
}

myarr.sort((a, b) => {

  if(mostWolves(a) > mostWolves(b)) {
    return -1;
  }else if(mostWolves(a) < mostWolves(b)) {
    return +1;
  } else {
    if(a.toLowerCase() > b.toLowerCase()) {
      return +1;
    }else if(a.toLowerCase() < b.toLowerCase()) {
      return -1;
    } else {
      return 0;
    }
  }
});

console.log(myarr);

Надеюсь, это поможет вам.

0 голосов
/ 29 января 2020

Вы можете разделить, получить счет и исходный индекс, отсортировать, посчитав и индексировать, наконец, взять объединенную строку.

var string = "My passion is to work towards my goal is the whole idea",
    array = string.split(' '),
    hash = array.reduce((o, k, index) => {
        o[k] = { index, count: (k.match(/[aeiou]/g) || []).length };
        return o;
    }, {})
    result = array
        .sort((a, b) => hash[b].count - hash[a].count || hash[b].index - hash[a].index)
        .join(' ');

console.log(result);
0 голосов
/ 29 января 2020

Вы можете сначала разделить их, затем подсчитать количество гласных, затем выполнить сортировку.

var str = "My passion is to work towards my goal is the whole idea"

var vowels = 'aeiou'

str.split(' ')
    .map(word => [word, Array.from(word.toLowerCase()).filter(char => vowels.indexOf(char) > -1 ).length])
    .sort((_1,  _2) => _1[1] > _2[1]? -1: 1).map(_ => _[0])

[ "страсть", "идея", "навстречу", "цель", "целое", "есть", "к", "работа", "есть", "the", "мой", "мой"]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...