1

私はそうのような文字列の配列を持っています...そして、私がしたいのは、inputArray内の各文字列を調べて、names配列の名前が含まれているかどうかを調べることです。そのようanswerKeyアレイにチェック

  1. プッシュ名前:それは名前の一致を見つけるたび

    が、それは二つのことを行う必要があります

    VAR answerKey = [ "ボブ" を、 「チモシー" " jenny "、 " timothy "、 " jeremy " ];

2.名前を '?'に置き換えて文字列をプッシュします。別の配列(出力)そうのように:部分文字列が照合されるべき1つの配列と文字列であるとき

var output = [ 
"? goes to the zoo", 
"? likes to eat ice-cream", 
"? wants to play with her friends", 
"There is no one in the room to play with ?", 
"? has been sleeping all day" 
]; 

私は、文字列内のサブストリングのチェックに精通していなく、他にあります。すべてのヘルプは非常に高く評価されるだろう:))

+0

家事のようですね! –

答えて

1

使用array.prototype.maparray.prototype.filter

var inputArray = [ 
    "Bob Johnson goes to the zoo", 
    "Timothy Smith likes to eat ice-cream", 
    "Jenny wants to play with her friends", 
    "There is no one in the room to play with Timothy", 
    "Jeremy Jones has been sleeping all day" 
]; 

var names = [ 
    "Bob Johnson", 
    "Bob", 
    "Timothy Smith", 
    "Timothy", 
    "Jenny Sanderson", 
    "Jenny", 
    "Jeremy Jones", 
    "Jeremy" 
]; 

var answers = []; 
var outputArr = inputArray.map(function(row){ 
    var matches = names.filter(function(name){ return row.indexOf(name) > -1 }); 
    matches.forEach(function(match){ answers.push(match); row = row.replace(match, '?')}); 
    return row; 
}); 

console.log('answers: ' + answers); 
console.log('outputArr: ' + outputArr); 

ところで、それは名前の配列は、単にtoLowerCaseを使用し、小文字です。

JSFIDDLE

1

チェックこれが動作するかどうか:

var output = []; 
for(var c in inputArray){ 
    output[c] = inputArray[c].toLowerCase(); 
    for(var o in names){ 
    output[c] = output[c].replace(names[o],"?"); 
    } 
} 

右ここで期待される出力配列。

0

この場合は、ネストされたforループを使用して、部分文字列をチェックする必要があります。助けのための

var answerKey = [], output = []; 
for(var i = 0; i < inputArray.length; i++){ 
    for(var j = 0, len = names.length; j < len; j++){ 
    if(inputArray[i].toLowerCase().indexOf(names[j]) > -1){ 
     answerKey.push(names[j]) 
     output.push(inputArray[i].toLowerCase().replace(names[j], '?')) 
    } 
    } 
} 
0
var output = new Array(); 
names.forEach(function(field, index) { 

    inputArray.forEach(function(key, val) { 
      var str1 = key.toUpperCase(); 
      var str2 = field.toUpperCase();; 
      var stat = str1.contains(str2); 
      if(stat == true){ 
      newArray.push(str1.replace(str2,"?")); 
      } 

    }); 
}); 
console.log(output);