2015-11-30 29 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拆呢。拆分方法,并将第一个单词与第二个数组中的元素进行比较,如果匹配,则可以打印该索引处的元素。