【问题标题】:Javascript: Sort by first characters of an an arrayJavascript:按数组的第一个字符排序
【发布时间】:2017-02-25 20:00:03
【问题描述】:

请耐心等待,我对 javascript 还是有点陌生​​。我正在尝试对保存游戏代码的列表进行排序,以便按照他们对元素的第一次解析进行排序。

var vList =["1|846|Doc|2|0|false|", "11|203|Derik|7|3|false|", "21|670|Mike|5|5|true|", "13|11|Ron|0|0|false|", "9|1000|Blood|9|9|true|"];
var vParse;
for (i = 0; i < (vParse.length); i++)
    var vParse[i]= vList.split('|');

// then somehow sort all the data based on vParse[0]?

我尝试了一些其他人提交的排序,但我无法让它在第一次解析后忽略所有字体。谁能帮帮我?

【问题讨论】:

  • 您只想根据管道前的第一个数字对数组进行排序?
  • @adeneo 是的,没错

标签: javascript string sorting parsing numbers


【解决方案1】:

这个怎么样

vList.map(function(el){return {sortBy : parseInt(el.split('|')[0]), original : el}}).sort(function(a,b){return a.sortBy - b.sortBy}).map(function(el){return el.original})

【讨论】:

    【解决方案2】:

    试试这样的:

    vList.sort( function( a, b ) {
        return parseInt( a.split( '|' )[ 0 ] ) - parseInt( b.split( '|' )[ 0 ] );
    } );
    

    您可以阅读有关sortsplitparseInt 方法的更多信息。

    【讨论】:

    • 由于 javascript 类型强制,在这种情况下,字符串上的 '-',不需要 parseInt。
    • @Keith,当然,我只是觉得parseInt 方法对初学者来说更明显
    【解决方案3】:

    您可以使用Array.sort 并在管道上拆分,获取第一项,然后在减去字符串时将其转换为数字

    var vList =["1|846|Doc|2|0|false|", "11|203|Derik|7|3|false|", "21|670|Mike|5|5|true|", "13|11|Ron|0|0|false|", "9|1000|Blood|9|9|true|"];
    
    vList.sort(function(a,b) {
        return a.split('|')[0] - b.split('|')[0];
    });
    
    console.log(vList)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-11
      • 1970-01-01
      • 2016-10-07
      • 2022-01-13
      • 1970-01-01
      相关资源
      最近更新 更多