![](/img/trans.png)
[英]Use Javascript or jQuery to create array from textbox input and with the possibility of removal of array elements onClick
[英]Use Javascript or jQuery to create an array from an array
假設您有一個數組:
var arrStateCityAll=['CA_Alameda','CA__Pasadena','CA_Sacramento','NY_Albany','NY_Buffalo','NY_Ithaca']
有沒有一種簡單的方法可以使用javascript和/或jQuery來過濾arrStateCityAll以獲取新數組(arrStateCityAll的子集); 像這樣的東西:
// return's ['CA_Alameda','CA__Pasadena','CA_Sacramento']
var arrStateCityCA=FilterArray('CA',arrStateCityAll);
您可能想對每個項目進行正則表達式。 您可以使用jQuery的grep
函數來做到這一點。
您可以使用javascript的Array.filter 。
var arrStateCityAll = ['CA_Alameda','CA__Pasadena','CA_Sacramento','NY_Albany','NY_Buffalo','NY_Ithaca']
var arrStateCityCA = arrStateCityAll.filter( function (element) {
return element.indexOf("CA_") == 0;
});
上面鏈接的mozilla文檔提供了針對不隱式支持過濾器的瀏覽器的解決方案。
您可以使用jQuery.grep
var arrStateCityCA =
$.grep(arrStateCityAll,function(el,i){return (el.substring(0,2)=='CA')});
要實現帖子中顯示的實際FilterArray函數,您可以執行
function FilterArray(state,arr){
return $.grep(arr,
function(el,i) {return (el.substring(0,2)==state)}
);
}
這有一些假設。
狀態始終為2個字符。
狀態始終是前2個字符。
當然記住大小寫(這個功能是區分大小寫),即'CA'
不等於'Ca'
。
這應該工作。
var arrStateCityCA = [];
for (var i = 0;i<arrStateCityAll.length;i++){
if (arrStateCityAll[i].substr(0,2) == 'CA'){
arrStateCityCA.push(arrStateCityAll[i]);
}
}
如果您要在州名和城市名之間使用反底線,則可以在下划線處進行分割,並針對第一個數組值進行測試
function getSubSetByState(set,state) {
var result = [];
for(var i=0,l=set.length;i<l;++i) {
if(set[i].split('_')[0] === state) {
result.push(set[i]);
}
}
return result;
}
通過為它提供一組位置,然后提供要搜索的狀態來使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.