2015-11-30 36 views
0

我有兩個數組。如果arrayTwo有顏色「藍‘紅從arrayOne’,然後返回‘藍畫’,‘紅沙發’,‘藍罐’如何從這個陣列中選擇元素

var arrayOne = ["green wall", "blue painting", "red sofa", "yellow shelf", "blue pot"]; 

var arrayTwo = ["blue", "red"]; 

for (var i=0; i < arrayOne.length; i++) { 
if (arrayOne[i] == "blue" || "red"){ 
// this should give colors that match in arrayOne 
} 
} 

編輯:我想知道,如果詞語的陣列一個匹配和,兩個,而是沒有硬編碼

+0

也許解釋你的問題和你正在做的事情。我們在討論arrayOne中元素的前綴嗎? – Florian

+0

是否需要在arrayOne中輸出arrayTwo中包含前綴的元素數組? – danh

+0

單詞可以按任意順序「藍色繪畫」或「真藍色」 – Ann

回答

3

您可以使用正則表達式爲:

var arrayOne = ["green wall", "blue painting", "red sofa", "yellow shelf", "blue pot"]; 

var arrayTwo = ["blue", "red"]; 
var regex = new RegExp('^(' + arrayTwo.join('|') + ')'); 
for (var i=0; i < arrayOne.length; i++) { 
    if (arrayOne[i].match(regex)) { 
     // this should give colors that match in arrayOne 
    } 
} 
+0

謝謝。我不想硬編碼'.match(/ ^(blue | red)/)'。 – Ann

+0

@Ann我更新了代碼。 – jcubic

+0

不只是前綴。 Word可以像「藍色牆壁」或「真正的藍色」一樣匹配 – Ann

0

作爲一個基本的算法,您可以循環在第一陣列中的每個元素,使用String.prototype拆呢。拆分方法,並將第一個單詞與第二個數組中的元素進行比較,如果匹配,則可以打印該索引處的元素。