我正在开展项目,我有一个与此相关的阵列
var sortBp = [ 'height58em', 'width480px', 'width767px', 'width768px', 'width959px' ];
我想消除任何立即数字数组&只显示他们之间的数字更高
例如,来自数组width767px
& width768px
是立即数字数组。
我想要消除width767px
&保持width768px
,因为它的数字越大。
所以最后的结果将是
var sortBp = [ 'height58em', 'width480px', 'width768px', 'width959px' ];
纯粹的javascript函数可以吗?
编辑:
我已经使用follwoing函数对数组进行了排序,但我不清楚如何删除立即数组。
var sortBp = bpArrays.sort(function(a, b) {
a = a.replace(/[a-z]/g, '');
b = b.replace(/[a-z]/g, '');
return a - b;
});
答案 0 :(得分:0)
当然有可能。只需对数组进行排序,然后迭代并收集每个属性的第一个和最后一个“外观”。
答案 1 :(得分: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);
演示:Fiddle
答案 2 :(得分: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);