如何将数组中找到的字符串中的单个字母推送到子数组
How to push individual letters from string found in array to sub-array
我希望使用 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"]];
我想真正的问题是这可能吗?
提前感谢您提出的所有建议。
按space拆分单词,然后映射并拆分每个单词:
const words = "abc def";
const result = words.split(' ')
.map(w => w.split(''));
console.log(result);
这是我会做的:
1) Split 单词按空格 ''
2) 使用spread syntax展开上述数组中的每个单词。
const word = "abc def";
const res = word.split(' ').map(element => [...element]);
console.log(res)
我想,这段代码会对你有所帮助!
var data = "this is test data";
var arrayData = data.split(' ').map(i=> i.split(''));
console.log(arrayData);
你主要想解决两个问题。首先,您想为每个单词创建一个单独的数组(检测单词边界)。接下来,您想将每个单词拆分为其组成字母。
在没有任何 "modern" JavaScript 魔法(map、reduce 等)的情况下执行此操作看起来像这样:
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]
所以我们可以re-write第 2 步使用这样的方法:
wordArray = wordArray.map(function(word) { return word.split(""); });
最后,我们可以使用箭头函数进一步简化。箭头函数基本上是 short-hand 用于以下内容:
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(""));
好了。 "modern" 答案,从基础创建。
首先使用 space,
将文本拆分为单词
然后得到每个单词后,用空字符串按字母拆分
这应该有效
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);
}
无需手动嵌套循环,直接使用split and map得到结果
var word = "abc def";
var wordArray = word.split(" ").map(w => w.split(''));
我希望使用 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"]];
我想真正的问题是这可能吗?
提前感谢您提出的所有建议。
按space拆分单词,然后映射并拆分每个单词:
const words = "abc def";
const result = words.split(' ')
.map(w => w.split(''));
console.log(result);
这是我会做的:
1) Split 单词按空格 ''
2) 使用spread syntax展开上述数组中的每个单词。
const word = "abc def";
const res = word.split(' ').map(element => [...element]);
console.log(res)
我想,这段代码会对你有所帮助!
var data = "this is test data";
var arrayData = data.split(' ').map(i=> i.split(''));
console.log(arrayData);
你主要想解决两个问题。首先,您想为每个单词创建一个单独的数组(检测单词边界)。接下来,您想将每个单词拆分为其组成字母。
在没有任何 "modern" JavaScript 魔法(map、reduce 等)的情况下执行此操作看起来像这样:
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]
所以我们可以re-write第 2 步使用这样的方法:
wordArray = wordArray.map(function(word) { return word.split(""); });
最后,我们可以使用箭头函数进一步简化。箭头函数基本上是 short-hand 用于以下内容:
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(""));
好了。 "modern" 答案,从基础创建。
首先使用 space,
将文本拆分为单词然后得到每个单词后,用空字符串按字母拆分
这应该有效
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);
}
无需手动嵌套循环,直接使用split and map得到结果
var word = "abc def";
var wordArray = word.split(" ").map(w => w.split(''));