JavaScript - 从数组中获取元素字符串的一部分



我有这个数组

const array = ['item-30', 'part-12', 'list-41'];

我需要的是根据每个元素的后缀从最小到最大排序

示例:

  • 第12部分
  • 第30项
  • 列表41

从上面的列表中可以看到,数组中的元素根据字符串的后缀(即-12、-30、-40(按顺序显示

此外,我需要元素有序。但是字符串中没有前缀

示例:

  • 部分
  • 项目
  • 列表

所以现在数组是有序的,减去(-后缀(。

我尝试了以下方法:

const array = ['item-30', 'part-12', 'list-41'];
console.log(array.sort((a, b) => a < b ? 1 : 1));

我真的希望这是有道理的D

sortmapsplit用于解决此问题。

const fruits = ['item-30', 'part-12', 'list-41'];
var result = fruits.sort((a, b) => Number(a.split("-")[1]) - Number(b.split("-")[1])).map(a => a.split("-")[0])
console.log(result)

sort()为数字时,回调只是a - b。为了得到这些数字,我们将.slice(-2)每个字符串的最后两个字符,然后通过在它们前面加一个+:将该字符串强制转换为一个数字

.sort((a, b) => +a.slice(-2) - +b.slice(-2))

接下来,.map()每个字符串和在每个迭代.replace()上的文字-";一个或多个数字">:当前字符串上没有d+'':

.map(x => x.replace(/-d+/, '')); 

let array = ['item-30', 'part-12', 'list-41'];
let output = array
.sort((a, b) => +a.slice(-2) - +b.slice(-2))
.map(x => x.replace(/-d+/, '')); 
console.log(output);

相关内容

  • 没有找到相关文章

最新更新