簡體   English   中英

使用Javascript或jQuery從數組創建數組

[英]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函數來做到這一點。

http://api.jquery.com/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')});

jsfiddle上的演示

要實現帖子中顯示的實際FilterArray函數,您可以執行

function FilterArray(state,arr){
    return $.grep(arr,
                  function(el,i) {return (el.substring(0,2)==state)}
    );
}

這有一些假設。

  1. 狀態始終為2個字符。

  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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM