Javascript中的问题
我之前使用sort函数提供了一个解决方案Javascript 2D array sorting - by numerical value我问过这个问题,我尝试过这个问题而没有成功。原来的排序功能不正常我使用的工具中,它按5个值,然后停止工作 - 并使用负值等谈过,他们的开发团队没有工作,被告知升级 - 不是一个选项< / p>
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]
答案 0 :(得分:2)
创建一个自定义对象数组并填充数据
for (var i = 0; i < values.length; i++) {
myArray[i].value = values[i];
myArray[i].label = labels[i];
}
然后实现自己的bubblesort算法:
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;
};
};
};
答案 1 :(得分:0)
var list = ['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”]
答案 2 :(得分:0)
此方法是一种非常简单易行的方法,无需使用 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]));