Javascript-在数组中搜索整个单词,并创建具有一致性的新数组

Javascript-在数组中搜索整个单词,并创建具有一致性的新数组,javascript,arrays,if-statement,Javascript,Arrays,If Statement,具有名为data的数组的数组,格式如下: > data[1].toString() "Seed Keywords,disconnectors,EUR,210,0.03,,,,,N,Y," 以及另一个名为groupKeywordsText的数组,该数组包含要在数组数据中查找的单词列表: > console.log(groupKeywordsText); ["switch", "ac", "high", "switches", "disconnect", "voltage", "is

具有名为
data
的数组的
数组
,格式如下:

> data[1].toString()
"Seed Keywords,disconnectors,EUR,210,0.03,,,,,N,Y," 
以及另一个名为
groupKeywordsText
的数组,该数组包含要在数组数据中查找的单词列表:

> console.log(groupKeywordsText);
["switch", "ac", "high", "switches", "disconnect", "voltage", "isolator"]
我需要创建一组新数组,这些数组只包含
data
中的元素,其中包含
groupKeywordsText
中的整个单词

一些示例:

> data[3].toString()
"Keyword Ideas,ac,EUR,1900,0.00,1.58,,,,N,N,"
> data[12].toString()
"Keyword Ideas,high voltage,EUR,27100,0.00,1.58,,,,N,N,"
> data[18].toString()
"Keyword Ideas,isolator for switch,EUR,1100,0.00,1.58,,,,N,N,"
> data[28].toString()
"Keyword Ideas,stackoverflow,EUR,1900,0.00,1.58,,,,N,N,"
只能在一个新数组中分配数组:

> data[3].toString()
"Keyword Ideas,ac,EUR,1900,0.00,1.58,,,,N,N,"
> data[12].toString()
"Keyword Ideas,high voltage,EUR,27100,0.00,1.58,,,,N,N,"
> data[18].toString()
"Keyword Ideas,isolator for switch,EUR,1100,0.00,1.58,,,,N,N,"
> data[28].toString()
"Keyword Ideas,stackoverflow,EUR,1900,0.00,1.58,,,,N,N,"
  • 将分配给第二个新数组,因为“ac”正好是搜索项之一
一个数组可以分配到多个新数组中:

> data[3].toString()
"Keyword Ideas,ac,EUR,1900,0.00,1.58,,,,N,N,"
> data[12].toString()
"Keyword Ideas,high voltage,EUR,27100,0.00,1.58,,,,N,N,"
> data[18].toString()
"Keyword Ideas,isolator for switch,EUR,1100,0.00,1.58,,,,N,N,"
> data[28].toString()
"Keyword Ideas,stackoverflow,EUR,1900,0.00,1.58,,,,N,N,"
  • 将分配给第三个新数组,因为“高端” 包含要搜索的术语:“高”
  • 此外,它将包括在5th阵列中,因为“电压”也会出现
一个数组可以分配到多个新数组中,但不能分配到其他数组中:

> data[3].toString()
"Keyword Ideas,ac,EUR,1900,0.00,1.58,,,,N,N,"
> data[12].toString()
"Keyword Ideas,high voltage,EUR,27100,0.00,1.58,,,,N,N,"
> data[18].toString()
"Keyword Ideas,isolator for switch,EUR,1100,0.00,1.58,,,,N,N,"
> data[28].toString()
"Keyword Ideas,stackoverflow,EUR,1900,0.00,1.58,,,,N,N,"
  • 将分配给第一个新阵列,因为“开关隔离器” 包含要搜索的术语:“开关”
  • 此外,由于“隔离器”也出现,它将包含在第六个阵列中
  • 但是,它不会出现在第4个数组(“开关”)中,因为我们只搜索“开关”
不能在新数组中分配数组:

> data[3].toString()
"Keyword Ideas,ac,EUR,1900,0.00,1.58,,,,N,N,"
> data[12].toString()
"Keyword Ideas,high voltage,EUR,27100,0.00,1.58,,,,N,N,"
> data[18].toString()
"Keyword Ideas,isolator for switch,EUR,1100,0.00,1.58,,,,N,N,"
> data[28].toString()
"Keyword Ideas,stackoverflow,EUR,1900,0.00,1.58,,,,N,N,"
  • 不会分配给新数组,因为“stackoverflow”不是搜索项
到目前为止,我的代码如下所示:

    for ( var i = 0, l = groupKeywordsText.length; i < l; i++ ) {

        keywordToSearch = groupKeywordsText[i];
        var length = data.length;
        this["keywordGroup"+i] = [];

                for(var j = 0; j < length; j++) {
                    if (data[j][1] == keywordToSearch) {
                    this["keywordGroup"+i].push(data[j][1]);
                    }
                }

        console.log(this["keywordGroup"+i]);
    }
for(var i=0,l=groupKeywordsText.length;i

如何在字符串中搜索整个(而不是部分)单词?

要在字符串中搜索整个单词,可以使用:

var myString = 'longStringWithLotsOfWords';
var word = 'String';
var noWord = 'StackOverflow';
myString.indexOf(word) != -1; //true, 'String' is inside myString
myString.indexOf(noWord) != -1; //false, 'StackOverflow' is not inside myString
如果你有一根像

'firstValue,secondValue,thirdValue,Value'
如果要精确搜索“Value”,可以使用

var content = 'firstValue,secondValue,thirdValue,Value';
var contentAsArray = content.split('');
var hasElement = contentAsArray.indexOf('Value') != -1;
请注意,此技巧假定您的单词之间用“,”分隔

在你的情况下,我想你可以像这样使用它。因此,您不必将其转换为字符串并再次转换为数组

data[1].indexOf('wordThatYouWant')

如果您只想搜索整个单词,因此在查找“light”时排除“delight”,那么您可以使用带有
\b
内转义的正则表达式

此外,您还需要一个额外的循环,因为您的数据结构有两个维度

下面是一些代码,使用
\b
将搜索词转换为正则表达式:

功能测试(){
对于(var i=0,l=groupKeywordsText.length;idocument.write(''+JSON.stringify(result,null,4)+'').toString()
版本?您的回答帮助很大。首先,我发现了函数.indexOf(),它完成了这个任务。其次,它帮助我认识到,在比较之前,我没有将数组值转换为字符串。但是,双重检查结果后,结果似乎与预期不符,因为阵列是使用不需要的元素创建的(f.i.如果搜索开关,则会出现开关设备或开关等元素)。