Как вставить отдельные буквы из найденной в массиве строки в подмассив - PullRequest
0 голосов
/ 08 мая 2019

Я надеюсь поместить буквы строки, найденной в массиве, в подмассивы с помощью JavaScript.

Например:

var word = "abc def";
var wordArray = [];
var firstArray = randomWord.split(" ");

for (var l = 0, len = firstArray.length; l < len; l++) {
   for (var m = 0, len2 = firstArray[l].length; m < len2; m++) {
      console.log(firstArray[l][m]);
      WordArray.push(firstArray[l][m]);   
      WordArray = randomWordArray.filter(function(str) {
         return /\S/.test(str);
      });
   };
};

console.log("word", word);
console.log("wordArray", wordArray);

В настоящее время я получаю ...

wordArray = ["a", "b", "c", "d", "e", "f"];

То, на что я надеюсь, это ...

wordArray = [["a", "b", "c"],["d", "e", "f"]];

Полагаю, реальные вопросы - это возможно?

Заранее спасибо за любые предложения.

Ответы [ 6 ]

2 голосов
/ 08 мая 2019

Вы в основном хотите решить две проблемы.Во-первых, вы хотите создать отдельный массив для каждого слова (определить границы слов).Затем вы хотите разбить каждое слово на составляющие буквы.

Выполнение этого без какой-либо "современной" магии JavaScript (отображение, уменьшение и т. Д.) Будет выглядеть примерно так:

var word = "abc def";

// Step 1.
var wordArray = word.split(" ");
console.log(wordArray); // ["abc", "def"]

// Step 2.
for (var i = 0; i < wordArray.length; i++)
{
    wordArray[i] = wordArray[i].split("");
}
console.log(wordArray); // [["a", "b", "c"], ["d", "e", "f"]]

Этот второй шаг можно записать в несколько более компактной форме, осознав, что это так называемая проблема mapping .Вы хотите взять каждый элемент массива и преобразовать его из одной формы (строки) в другую (массив букв).Для этого в JavaScript предусмотрен метод map:

var squares = [1, 2, 3].map(function(x) { return x * x; });
console.log(squares); // [1, 4, 9]

Таким образом, мы можем переписать шаг 2, используя этот метод следующим образом:

wordArray = wordArray.map(function(word) { return word.split(""); });

Наконец, мы можем упростить дальнейшее использованиефункция стрелки.Функции стрелок в основном сокращены для следующего:

x => x + 1;

// Is equivalent to:

(function(x) {
    return x + 1;
}).bind(this);

Пока игнорируем бит .bind() (это неважно для вашей проблемы), и мы можем записать шаг 2 как:

wordArray = wordArray.map(word => word.split(""));

Комбинируя эти два улучшения, мы получаем:

var word = "abc def";
// Step 1.
var wordArray = word.split(" ");
// Step 2.
wordArray = wordArray.map(word => word.split(""));

Мы можем уменьшить это немного больше, передав результат word.split(" ") непосредственно шагу 2 без сохраненияэто в промежуточную переменную:

var word = "abc def";
// Step 1 and 2.
var wordArray = word.split(" ").map(word => word.split(""));

И вот оно у вас.«Современный» ответ, созданный из основ.

1 голос
/ 08 мая 2019

Вот что я хотел бы сделать:

1) Разделить слова по пробелам ''

2) Использовать синтаксис развернуть каждое слово в указанном массиве.

const word = "abc def";

const res = word.split(' ').map(element => [...element]);
console.log(res)
0 голосов
/ 08 мая 2019

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

var word = "abc def";
var wordArray = word.split(" ").map(w => w.split(''));
0 голосов
/ 08 мая 2019

Сначала разделите текст на слова, используя пробел,

Затем, получив каждое слово, используйте пустую строку, чтобы разделить на буквы

Это должно работать

 let text = "abc def";
 let arrayFinal = [];

 for(let word of text.split(' ')) {
    let letterArray = [];
    for(let letter of word.split('')) {
      letterArray.push(letter);
     }

    arrayFinal.push(letterArray);
  }

сослаться на это

0 голосов
/ 08 мая 2019

Думаю, этот код тебе поможет!

var data = "this is test data";
var arrayData = data.split(' ').map(i=> i.split(''));

console.log(arrayData);
0 голосов
/ 08 мая 2019

Разделить слова по пробелам, а затем отобразить и разделить каждое слово:

const words = "abc def";

const result = words.split(' ')
  .map(w => w.split(''));

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