0

私はこれに似た配列を持っているプロジェクトに取り組んでいます

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

即値の配列を削除し、それらの間のより高い数のみを表示したい

たとえば、上記の配列からwidth767pxwidth768pxは即値配列です。

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

もちろん可能です。配列を並べ替えてから、各属性の最初と最後の「外観」を繰り返して収集します。

于 2013-03-11T12:46:18.197 に答える
0

あなたは次のようなことをすることができます

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);

デモ:フィドル

于 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 に答える