gpt4 book ai didi

javascript - 对字符串中的元素进行排序

转载 作者:行者123 更新时间:2023-12-02 17:55:12 25 4
gpt4 key购买 nike

我有一根绳子!

  • 7 条蛇
  • 4 辆自行车
  • 2 个芒果

它由数字+[空格]+事物字符串组成。我需要能够引用数字对整个字符串进行排序。所以它应该出来:

  • 2 个芒果
  • 4 辆自行车
  • 7 条蛇

这是对数字进行简单的冒泡排序,然后交叉引用索引以获得最终顺序。下面的 JavaScript 代码可以工作,但我忍不住认为它可以变得更高效。我在这里错过了一个技巧吗??

请记住:我是一名艺术家,所以我用蜡笔编写代码!

var eventsStr = "7 serpents\n4 bikes\n2 mangoes"
var splitArr = eventsStr.split("\n")
var numArray = new Array();
var events = new Array();

for (var i = 0; i < splitArr.length; i++)
{
var temp = splitArr[i] ;
var part1 = temp.substring(0, temp.indexOf(" "))
var part2 = temp.substring(temp.indexOf(" ")+1, temp.length)
numArray[i] = part1;
events[i] = part2;
}

var sorted = superCopy(numArray);
var sorted = sorted.sort(sortArrayNumerically);
alert(getOrder(sorted, numArray, events))


function getOrder(orderedarr, arr1, arr2)
{
var str = "";
for (var i = 0; i < arr1.length; i++)
{
for (var j = 0; j < orderedarr.length; j++)
{
if (arr1[i] == orderedarr[j])
{
// found the thing !what is the event?
str += arr1[i] + " " + arr2[i] + "\n";
}
}
}
return str
}

function sortArrayNumerically(a,b)
{
return a - b;
}

function superCopy(arr)
{
tempArr = new Array();
for (var i = 0; i < arr.length; i++)
{
tempArr[i] = arr[i]
}
return tempArr
}

最佳答案

您可以使用 JavaScript 的 sort()功能:

eventsStr.split('\n').sort().join('\n');
<小时/>
  • eventsStr.split('\n') - 首先在换行符上拆分字符串以创建数组
  • .sort() - 然后使用 sort() 函数对数组进行排序
  • .join('\n') - 然后将字符串重新组合在一起,并在数组元素之间使用换行符连接

引用:

<小时/>

不过,这是按字母顺序排序,因此如果您的字符串包含 12 个芒果,则结果不会按数字排序。要按数字排序,您可以执行以下操作:

eventsStr.split('\n').sort(function(a, b) {
return parseInt(a.split(' ')[0], 10) > parseInt(b.split(' ')[0], 10);
}).join('\n');

在这种情况下,将使用回调参数调用 sort() 函数,该函数采用 2 个值:要比较的第一个字符串和要比较的第二个字符串。然后,此回调函数分割字符串,提取数字并将其与另一个字符串中的数字进行比较。

关于javascript - 对字符串中的元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21022014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com