已知有兩個字串數組,暫且叫它們a1,a2吧。
現在的任務是,從a1中,找出所有是a2內元素子字串的元素,存放進新數組。
將這個新陣列依照字典序排序,並回傳。
來個例子:
a1 = ["arp", "live", "strong"]
a2 = ["lively", "alive", "harp", "sharp", "armstrong"]
回傳["arp", "live", "strong"]
在這裡,"arp"是"harp"的子字串," 是"harp"的子串,
"live"的子串,所以能被回傳。 再看個例子:
a1 = ["tarp", "mice", "bull"]
a2 = ["lively", "alive", "harp", "sharp", "armstrong"]
回傳[]
這裡a1
內都不符合子字串規則,所以回傳空數組。 好了,咋們來看怎麼解決:首先,看到子串,就估摸著需要個判斷是否是子串的方法:if(typeof String.prototype.isSubstringOf === "undefined"){ String.prototype.isSubstringOf = function(str){ return str.indexOf(this) >= 0; }; }然後,一一遍歷a1
function inArray(array1,array2){ var newArray = []; for(var i=0;i<array1.length;i++){ var temp = array1[i]; if(temp){ for(var j=0;j<array2.length;j++){ if(temp.isSubstringOf(array2[j])){ newArray.push(temp); break; } } } } return newArray.sort(); }然後,一一遍歷
a1
當前元素是否為
a2內元素的子字串,是,就push進新數組。
接著,等循環都結束了,新數組也填充了。 那字典序排序該怎麼做呢?莫非還要寫演算法?
沒這麼複雜,JavaScript內建的排序,預設就是字典序的。
sort
並且回傳吧!