为了账号安全,请及时绑定邮箱和手机立即绑定

如何在打字稿中创建另一个数组的排序索引数组?

如何在打字稿中创建另一个数组的排序索引数组?

潇潇雨雨 2023-09-21 10:05:27
我正在尝试从打字稿中的另一个数组获取有序的索引数组。让我举个例子:考虑一个函数,它接收任意大小的数组并返回另一个具有输入有序索引的数组:ex1: 输入=(5.3, 2.4, 4.5, 6.2) > 输出=(1,2,0,3)。ex2: 输入=(10, 11, 5, 34, 3, 7, 17) > 输出=(4,2,5,0,1,6,3)。我不能使用array.sort()as 来更改原始数组。我被困住了,因为我对 JS 和 TS(生锈的 Delphi 程序员)的经验很少。预先感谢您的任何想法。
查看完整描述

3 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

用于slice()制作副本,您可以在不改变原始数组的情况下进行排序,然后map()创建原始数组中每个已排序元素的索引的数组。


const data = [5.3, 2.4, 4.5, 6.2],

      data2 = [10, 11, 5, 34, 3, 7, 17];


const sortedIndex = (arr) => {

  return arr.slice().sort((a, b) => a - b).map(n => arr.indexOf(n))

}


console.log(JSON.stringify(sortedIndex(data)));

console.log(JSON.stringify(sortedIndex(data2)));


查看完整回答
反对 回复 2023-09-21
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

只需两行代码即可完成此操作:


var unsortedArray = [6, 4, 9, 1, 5];

var sortedArray = unsortedArray.slice().sort();


console.log(sortedArray);      // [1, 4, 5, 6, 9]

console.log(unsortedArray);    // [6, 4, 9, 1, 5]


查看完整回答
反对 回复 2023-09-21
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

您可以只复制数组然后对副本进行排序吗?


var array0 = [4,2,5,7,1.6];

var array1 = [];

for(var i=0;i<array0.length;i++){

  array1.push(array0[i]);

}

array1.sort();

//array0 = [4,2,5,6,1.6]

//array1 = [1.6,2,4,5,6]


查看完整回答
反对 回复 2023-09-21
  • 3 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信