2016-11-20 50 views
0

函数keywordusage应返回布尔型数组中的哪个关键字存在于文本中,例如:array: [true, false, false]。基于函数的第二个参数。现在,我只能返回true的值,我不知道如何在案例为false时返回false的值。代码如下。输出应为[TRUE,FALSE,FALSE]通过匹配两个数组中的单词返回一个布尔数组

{function keywordusage(str,strArr){ 
var count = []; 
var found = true; 
var notfound = false; 
    var words = str.split(' '); 
    var wordsLength = words.length; 
    var ArrLength = strArr.length; 
    for(var i = 0; i < ArrLength; i++){ 
    for(var j = 0; j < wordsLength; j++){ 
     if(words[j]===strArr[i]) 
     count.push(true); 
     } 
    } 
    return count; 
} 

document.write(keywordusage('Dive Into Python is a free book for experienced programmers', ['Python', 'python', 'scala']));} 
+2

'else {count.push(false);}'? –

+0

是的,这是真的,但将包括所有来自第二个字符串的错误,因为我运行两个循环。就像潜水,进入等我不想要的虚假价值一样。如果第二个数组中的单词匹配或不匹配,我只想true或false。结果应该是只有3个值的数组。 – sahil

回答

0
function keywordusage(text, keywords) { 
    var elements = text.split(" "); 
    var result = Array(); 
    for (var i=0; i < keywords.length;i++){ 
     if (elements.indexOf(keywords[i]) >= 0) 
      result[i] = true; 
     else 
      result[i] = false; 
    }//end of for loop 
    return result; 
} 

var result = keywordusage('Dive Into Python is a free book for experienced programmers', ['Python', 'python', 'scala']); 
console.log(result) 
+0

感谢兄弟.....其中最简单的一个。我知道了 – sahil

0

所有你需要是使用array.map()函数,其基本上是一个命令,允许你通过执行函数来创建一个新的数组对现有数组中的每个值。

在这种情况下阵列1已经存在,并且returnArray未定义

则称returnArray等于“通过检查textString.indexOf(array1)在array1每个值映射大于-1

.indexOf()返回的位置在字符串中的字符串,或-1,如果该字符串不存在。

function keywordusage(array1, textString) { 
 
    var returnArray = array1.map(x => textString.indexOf(x) > -1); 
 
    return returnArray; 
 
} 
 

 
// demonstration of usage 
 
var checkArray = ["the", "quick", "brown"]; 
 
var checkString = "the quick red fox jumped over the lazy dog"; 
 

 
console.log(JSON.stringify(keywordusage(checkArray, checkString)));

+0

哦,你让我的一天....... :)谢谢 – sahil

1

你可以只用一个图来检查,如果你的模式阵列的话是在字符串中

var keywordusage = (str, strArr) => strArr.map(x => str.split(" ").indexOf(x) !== -1); 
 
console.log(keywordusage('Dive Into Python is a free book for experienced programmers', ['Python', 'python', 'scala']));

+0

谢谢..我找到了解决方案。 – sahil

0

您可以简单地使用javascript map function

下面的代码

结帐

function keywordusage(str, strArr) { 
 
    var count = []; 
 
    strArr.map(function(s) { 
 
    return count.push(str.indexOf(s) !== -1); 
 
    }); 
 
    console.log(count); 
 
    return count; 
 
} 
 

 
document.write(keywordusage('Dive Into Python is a free book for experienced programmers', ['Python', 'python', 'scala']));

希望这将帮助你(Y)。

+0

是的,谢谢你,我发现我想要的。 :) – sahil

相关问题