从数组中提取索引,该数组包含字符串中的每个单词
Extracting Index from an Array, that contains each word in the string
抱歉,如果标题有点误导和不准确,但是......不知道如何为问题命名。所以这是详细描述的(问题)。
如何创建一个函数:
-
需要 2 个参数:
- -字符串
- -以及由该字符串中的每个单词组成的数组
-
并返回分解字符串的索引
*此数组中的元素可以包含/包含多个单词(即"灰狗")
让我通过显示字符串、数组和所需的输出来向您展示我的意思:
var animals = [
"Grey Dog", //0
"Lion", //1
"2 Cats", //2
"Black Widow Spider", //3
"Hippo", //4
"Bird" //5
]
var userInputText = "2 Cats Hippo Grey Dog Lion Hippo Lion 2 Cats Black Widow Spider Hippo Hippo";
var output = decomposeStringToIndexes(animals ,userInputText);
当我跟踪/记录/检查输出变量时,它将包含:
output = [
2,//2 Cats
4,//Hippo
0,//Grey Dog
1,//Lion
4,//Hippo
1,//Lion
2,//2 Cats
3,//Black Widow Spider
4,//Hippo
4//Hippo
];
编辑:
字符串(userInputText)将仅包含数组中列出的单词(动物)
每个空格之间可以有多个空格(即'')词
像这样:
var userInputText = "2 Cats Hippo Grey Dog Lion Hippo Lion 2 Cats Black Widow Spider Hippo Hippo";
我建议遍历搜索词并记住位置并使用这些项目构建一个对象。稍后剥离索引并仅返回一个数组。
~
是按位 not 运算符。它非常适合与indexOf()
一起使用,因为如果找到索引0 ... n
并且如果不是-1
,indexOf
返回:value ~value boolean -1 => 0 => false 0 => -1 => true 1 => -2 => true 2 => -3 => true and so on
function decomposeStringToIndexes(array, string) {
var found = {};
array.forEach(function (a, i) {
var p = 0,
pos = string.indexOf(a);
while (~pos) { // equal to pos !== -1
found[pos] = i;
p = pos + a.length;
pos = string.indexOf(a, p);
}
});
return Object.keys(found)
.map(Number)
.sort(function (a, b) { return a - b; })
.map(function (k) { return found[k]; });
};
var animals = ["Grey Dog", "Lion", "2 Cats", "Black Widow Spider", "Hippo", "Bird"],
userInputText = "2 Cats Hippo Grey Dog Lion Hippo Lion 2 Cats Black Widow Spider Hippo Hippo",
output = decomposeStringToIndexes(animals, userInputText);
document.write('<pre>' + JSON.stringify(output, 0, 4) + '</pre>');
相关文章:
- Javascript-从随机的单词数组中创建段落
- 将组成单词的字符添加到数组的开头
- undercore返回数组中对象的indes,其中单词存在于对象中的句子中
- Javascript-在一个数组中搜索整个单词,并创建一个符合条件的新数组
- 在两个位置显示数组中的随机单词
- 如果输入包含数组中的任何单词
- 单词数组到字符串
- 如何在 JavaScript 中将数组中每个单词的首字母大写
- 当javascript单词this用作数组时,它的含义是什么
- 如果字符串与数组中的多个单词匹配,则Javascript会选择该字符串
- Javascript/Node AI-如何使用match从单词数组中重复单词
- innerhtml.replace没有替换数组javascript中的所有单词
- 找到包含单词的特定链接并添加到数组中
- 将单词与具有JavaScript Regexp的数组进行匹配
- 在单词数组中查找相似的单词
- 查找数组中最长的单词/字符串
- 如何在 Javascript 中将字符串的每个单词放入数组中
- j查询从数组中删除值(如果包含单词)
- 在二维数组 JavaScript 中插入单词和计数
- 使用数组更改输入框中某些单词的颜色