0

我正在从事与此类似的数组的项目

var sortBp = [ 'height58em', 'width480px', 'width767px', 'width768px', 'width959px' ];

我想消除任何立即数数组&只显示它们之间的更高数字

例如,从上面的数组width767px&width768px是立即数数组。

我想消除width767px和保留width768px,因为它是更高的数字。

所以最终结果将是

var sortBp = [ 'height58em', 'width480px', 'width768px', 'width959px' ];

纯javascript函数有可能吗?

编辑 :

我已经使用以下函数对数组进行了排序,但我不清楚如何删除立即数组。

  var sortBp = bpArrays.sort(function(a, b) {
                    a = a.replace(/[a-z]/g, '');
                    b = b.replace(/[a-z]/g, '');
                    return a - b;
                });
4

3 回答 3

0

You can do something like

var sortBp = [ 'height58em', 'width480px', 'width767px', 'width768px', 'width959px' ];
var x = [];
var regex = /\d+/;
for(var i = 0; i < sortBp.length; i++){
    var c = sortBp[i], n = sortBp[i + 1];

    if(c && n && c.substring(0, 3) == n.substring(0, 3)){
        var cn = regex.exec(c)[0];
        var nn = regex.exec(n)[0];
        if(cn != nn - 1){
            x.push(c);
        }
    } else {
        x.push(c);
    }
}

console.log(x);

Demo: Fiddle

于 2013-03-11T12:54:15.460 回答
0

尝试这个:

var sortBp = [ 'height58em', 'width480px', 'width767px', 'width768px', 'width959px' ];
var arr=[];
for(var i=0;i<sortBp.length;i++)
{
    num=sortBp[i].replace(/\D/g,'');
    arr.push(num);
}
var newarr=[];
for(var i=0;i<arr.length;i++)
{
    if(arr[i+1] && arr[i]!=arr[i+1]-1)// for sorted array only 
    //or you can use sort method of javascript 
    //From http://www.javascriptkit.com/javatutors/arraysort.shtml
    {
        newarr.push(arr[i]);
    }
}
newarr.push(arr[arr.length-1]);// for last Element
console.log(newarr);

小提琴 http://jsfiddle.net/R75bd/

于 2013-03-11T12:54:57.863 回答
0

当然有可能。只需对数组进行排序,然后遍历并收集每个属性的第一个和最后一个“外观”。

于 2013-03-11T12:46:18.197 回答