【问题标题】:Sort multi-dimensional array, append text and then continue to sort array by number value in javascript对多维数组进行排序,追加文本,然后继续在javascript中按数值对数组进行排序
【发布时间】:2015-10-22 15:53:58
【问题描述】:

我目前对多维数组进行排序的代码:

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 box-shadow 语法)

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”附加到数组值。

【问题讨论】:

    标签: javascript sorting multidimensional-array alphanumeric


    【解决方案1】:

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

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

    【讨论】:

    • 嗯,也许这是我的代码,但是当我点击一个小于初始值的值时,它现在会附加“px”。此外,此时,它开始将“px”附加到旧值,从而产生滚雪球效果。 ——
    • 因为你是在最后一个元素上加上px,所以排序的时候不一定是最后一个!
    猜你喜欢
    • 2013-12-14
    • 1970-01-01
    • 2018-08-08
    • 2012-08-03
    • 2011-10-23
    • 2012-06-15
    • 2017-11-09
    相关资源
    最近更新 更多