Javascript,Array第一封信从一封信到另一封信

时间:2015-06-18 09:00:56

标签: javascript arrays

我有一个来自AZ的ABC名称数组,我希望得到从A到J的所有名称。除了检查每个字符的第一个字母与所有字母的数组之外,还有什么方法可以做到这一点。 A到J?

示例:

    var array=['Amy','Dolly','Jason','Madison','Patricia'];

我想要一系列Amy,Dolly和Jason。

4 个答案:

答案 0 :(得分:7)

您可以使用{/ 3}}功能

var array=['Amy','Dolly','Jason','Madison','Patricia'];

var filtered = array.filter(function(el){return el[0]>='A' && el[0]<='J'})

var array=['Amy','Dolly','Jason','Madison','Patricia'];

var filtered = array.filter(function(el){return el[0]>='A' && el[0]<='J'});

document.getElementById('res').innerHTML = JSON.stringify(array) + '<br />' + JSON.stringify(filtered);
<div id="res"></div>

上面的代码检查数组中的所有元素,如果你想避免它并且数组已经排序,你可以使用简单的 for loop

var array=['Amy','Dolly','Jason','Madison','Patricia'];
var result=[];

for(var i=0;i<len=array.length; i<len && (array[i][0]>='A' && array[i][0]<='J'); i++){
    result.push(array[i]);
}

或同一个班轮

for(var i=0, result=[], len=array.length; i<len && (array[i][0]>='A' && array[i][0]<='J');result.push(array[i]),i++);
<{1>}中的

- 过滤集合;

另一种方法是找到索引,然后使用 slice ,如

result

来自@dandavis的评论与过滤器正则表达式

的评论
for(var i=0, len=array.length; i<len && (array[i][0]>='A' && array[i][0]<='J');i++);
var result = array.slice(0,i);

改变

var filtered = array.filter(/./.test, /^[A-J]/);

答案 1 :(得分:1)

您可以使用字符的ascii-value并使用过滤器来获得所需的结果。 “J”的字符代码值为74,“A”的字符代码值为65。

array.filter(function(v) { return v.charCodeAt(0) >= 65 && v.charCodeAt(0) <= 74 })

答案 2 :(得分:1)

您可以使用正则表达式执行此操作..

   var array=['Amy','Dolly','Jason','Madison','Patricia'];
    var reg = new RegExp('^[A-J]');
    var arrTemp=[];
    var intLength = array.length;

    for(var i=0;i<intLength ;i++){ 
        if(reg.test(array[i])) { 
            arrTemp.push(array[i])
        }
    }

    console.log(arrTemp)

如果你想要考虑案例敏感性,那么你可以编写像

这样的正则表达式
var reg = new RegExp('^[A-Ja-j]');

答案 3 :(得分:0)

var array = ['Amy', 'Dolly', 'Jason', 'Madison', 'Patricia'],
    bound = { lower: 'A', upper: 'J' },
    newArray = [],
    i = 0, j, l = array.length;
// lookup for the first element of the array which is smaller than the lower bound
while (i < l && array[i][0] < bound.lower) {
    i++;
}
j = i;
// lookup for the end of the upper bound and skip the rest
while (j < l && array[j][0] <= bound.upper) {
    j++;
}
// build new array
newArray = array.slice(i, j);