对多维数组进行排序,附加文本,然后继续按javascript中的数值排序数组

时间:2015-07-31 04:42:12

标签: javascript sorting multidimensional-array alphanumeric

我目前用于排序多维数组的代码:

s.storeValues = [];

convertToArray: function(e){
   var xVal = Math.floor(e.offsetX / s.pixSize) * s.pixSize;
   var yVal = Math.floor(e.offsetY / s.pixSize) * s.pixSize;

   s.storeValues.push([xVal, yVal]);
   var compare = function(a, b) {return a[0] - b[0]; };
   s.storeValues.sort(compare);
}

问题是当我尝试添加(为了将px添加到数字+模拟css框阴影语法)

for(var i = 0; i < 2; i++){
   s.storeValues[s.storeValues.length - 1][i] += "px";
}

排序不再有效。关于如何从这里开始的任何想法,非常感谢。谢谢!

以上代码全部(供参考):

s.storeValues = [];

convertToArray: function(e){
   var xVal = Math.floor(e.offsetX / s.pixSize) * s.pixSize;
   var yVal = Math.floor(e.offsetY / s.pixSize) * s.pixSize;

   s.storeValues.push([xVal, yVal]);
   var compare = function(a, b) {return a[0] - b[0]; };
   s.storeValues.sort(compare);

   for(var i = 0; i < 2; i++){
     s.storeValues[s.storeValues.length - 1][i] += "px";
   }
}

编辑:我希望在解析和排序数字后,将“px”附加到数组值。

1 个答案:

答案 0 :(得分:2)

添加像素时,您有字符串而不是数字。所以你需要解析数字

convertToArray: function(e){
   var xVal = (Math.floor(e.offsetX / s.pixSize) * s.pixSize) + "px";
   var yVal = (Math.floor(e.offsetY / s.pixSize) * s.pixSize) + "px";
   s.storeValues.push([xVal, yVal]);
   var compare = function(a, b) { return parseFloat(a[0]) - parseFloat(b[0]); };
   s.storeValues.sort(compare);
}