gpt4 book ai didi

javascript - 排序后如何保持数组索引>值

转载 作者:行者123 更新时间:2023-11-30 11:35:32 25 4
gpt4 key购买 nike

在 javascript 中我有下一个数组:

var a = [0, 2, 1, 3];

这个数组索引>值对是:

0 = 0, 1 = 2, 2 = 1, 3 = 3

在排序数组后保留数组索引号的最简单和最优雅的方法是什么。在 sort() 之后 index>value pair 应该是这样的:

0 = 0, 2 = 1, 1 = 2, 3 = 3

.. 但我应该能够显示那些排序后的值。问题是数组不能通过跳转索引位置 0、2、1、3 来列出,而只能作为 0、1、2、3 列出。

我能否以某种方式创建一个新数组,其数组值将是那些新的索引位置,然后对这个新数组进行排序,但要记住以前的索引>值对。

虽然这听起来很简单,但我找不到解决办法。

谢谢

附言我实际上想按数组中包含的短语中单词之间的空格数进行排序。然后我想显示按空格数排序(首先是单词最多的短语)。

var input = ["zero", "here two spaces", "none", "here four spaces yes"];
var resort = [];
for (i = 0; i < input.length; i++) {
var spaces = (input[i].split(" ").length - 1);
resort.push(spaces); // new array with number of spaces list
}

最佳答案

你可以使用 Sorting with map使用保留原始索引和值的新数组。

// the array to be sorted
var list = [0, 2, 1, 3];

// temporary array holds objects with position and sort-value
var mapped = list.map(function(el, i) {
return { index: i, value: el };
})

// sorting the mapped array containing the reduced values
mapped.sort(function(a, b) {
return a.value - b.value;
});

// container for the resulting order
var result = mapped.map(function(el){
return list[el.index];
});

console.log(result);
console.log(mapped);
.as-console-wrapper { max-height: 100% !important; top: 0; }´

关于javascript - 排序后如何保持数组索引>值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44613846/

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