如何对数组进行排序,然后获取索引并使用索引移动所有相应的元素
How to sort an array then take the index and use the index to move all corresponding elements?
我有5个不同的数组具有相同的索引,例如:
person[0]="john", address[0]= "Druid Valley", city[0]="Atlanta", amount[0]=2000, need[0]=100;
person[1]="emily", address[1]="50 decatur", city[1]="Chicago", amount[1]=300; need[1]=50;
我需要按照need[]数组的降序重新排列所有数组,然后根据need[I]的新索引重新排列其他数组的顺序。我使用的是javascript。
谢谢你,
John
对need
数组进行排序并保存排序排列,然后将该排列应用于其他数组。具体如何做到这一点取决于你使用的语言。例如,Matlab sort
函数可以返回排序数组和排序排列。
不要对"need"进行排序。创建一个索引数组,然后根据需要对其进行排序。但是您没有指定语言,所以您得到了JavaScript:
var person = [], need = [];
var person = ["E", "B", "A", "C", "D"];
var need = [111, 444, 555, 333, 222];
var index = [];
var i = person.length;
while (i--) {
index.push(i);
}
var comparator = function(a, b) {
var need_a = need[a];
var need_b = need[b];
// For robustness - non-numbers get sorted last:
if (typeof need_a != 'number' || isNaN(need_a)) need_a = -Infinity;
if (typeof need_b != 'number' || isNaN(need_b)) need_b = -Infinity;
if (need_a < need_b) return 1;
if (need_b < need_a) return -1;
return 0;
}
index.sort(comparator);
// at this point, person[index[0]] is the person with the biggest need.
var sorted_person = [];
var i = index.length;
while (i--) {
sorted_person[i] = person[index[i]];
}
// at this point, sorted_person[0] is the person with the biggest need.
console.log(sorted_person);
创建一个复制数组,该数组将具有与所需数组相同的值(称为排序数组)。然后查看原始的需求数组-对于每个单元格,找到它在排序数组中的位置,并将其他数组中的匹配值放在排序数组中出现的相同单元格编号中
相关文章:
- 名称输入的索引
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 在jQuery中获取表的行索引
- FabricJs-限制主对象内添加对象的移动区域
- 测试索引值是否等于某个数字的倍数
- 循环遍历数组中的特定索引
- 按照选项卡索引的顺序循环一个jQuery选择
- 如何移动到数组的上一个/下一个索引键
- 在移动列后查找列的索引
- 移动safari忽略z索引
- Jquery .remove()移动索引
- 重定向到移动网站的每一页或只是根索引
- 将数组中的所有值向上移动一个索引,并将移位的最后一个元素作为第一个元素
- 如果在移动设备上,将数组(索引列表)拆分为两行
- 如何对数组进行排序,然后获取索引并使用索引移动所有相应的元素
- 将数组中的多个元素移动到数组中的某个索引
- 在JavaScript正则表达式匹配中移动索引