Javascript 中的问题
我之前问过这个问题Javascript 2D array sorting - by numeric value,并使用排序函数提供了解决方案,我尝试使用该解决方案但没有成功。事实证明,我正在使用的工具中的排序功能不正确,它对 5 个值进行排序,然后停止工作 - 并且无法使用负值等工作。与他们的开发团队交谈并被告知升级 - 不是一个选项。
Tl:dr - 我需要在不使用内置排序功能的情况下进行排序。
我有两个数组
values = [1000, 2356, 3456778, 7645748, -2324, 348845.45, -2345666]
labels = ["ValA", "ValB", "ValC", "ValD", "ValE", "ValF", "ValG", "ValH"]
这些需要组合起来显示[1000,ValA等],其中最大值首先出现。
没有内置的排序功能,我不知道如何继续。我尝试使用 Math.Max 循环遍历数组,但是当我组合这两个数组时,该函数停止工作。
我不确定是否要组合这两个单独的数组,或者将它们分开以便排序更简单,记住原始索引和标签链接。
欢迎任何想法或问题,我真的很困惑,而且不是一名开发人员,所以肯定有一些善良的人可能能够支持我。
谢谢
预期产出
[7645748, ValD]
[3456778, ValC]
[348845.45, ValF]
[2356, ValB]
[2324, ValE]
[1000, ValA]
[-2345666, ValG]
创建客户对象数组并使用数据进行计算
for (var i = 0; i < values.length; i++) {
myArray[i].value = values[i];
myArray[i].label = labels[i];
}
然后实现你自己的冒泡排序算法:
for (var j = 0; j < myArray.length - 1; j++) {
for (var i = 0, swapping; i < myArray.length - 1; i++) {
if (myArray[i].value > myArray[i + 1].value) {
swapping = myArray[i + 1];
myArray[i + 1] = myArray[i];
myArray[i] = swapping;
};
};
};
var 列表 = ['z','b','a','y'];
for (var j = 0; j < list.length - 1; j++) {
for (var i = 0, swapping; i < list.length - 1; i++) {
if (list[i]> list[i + 1]) {
swapping = list[i + 1];
list[i + 1] = list[i];
list[i] = swapping;
};
};
};
输出将为 = ["a", "b", "y", "z"]
此方法是一种非常简单且容易的方法,无需使用 sort() 方法即可解决数组中的排序问题。
function sortArray(arr) {
var temp = [];
if (Array.isArray(arr)) {
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length; j++) {
if (arr[i] < arr[j]) {
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
return arr;
}
}
console.log(sortArray([2, 6, 0, 4, 3, 4, 3, 5, 9, 6, 12, 43, 6]));
// It will work for both Python or JS code
let b = ["ValA", "ValB", "ValC", "ValD", "ValE", "ValF", "ValG", "ValH"]
for(let i=0;i<b.length-1;i++){
for(let j=i+1;j<b.length;j++)
{
if(b[j]<b[i])
{
temp = b[j]
b[j]=b[i]
b[i] = temp
}
}
}
console.log(b)
function sort(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
var temp = arr[j]
arr[j] = arr[i]
arr[i] = temp
}
}
}
return arr;
}