0

Javascript中的问题

我之前曾问过这个问题Javascript 2D array sorting - by numeric value with a solution 使用 sort 函数提供的解决方案,我曾尝试在没有成功的情况下使用该解决方案。结果发现排序功能在我使用的工具中不正确,它对 5 个值进行排序,然后停止工作 - 并且使用负值等不工作。与他们的开发团队交谈并被告知升级 - 不是一个选项。

Tl:dr - 我需要使用内置的排序功能进行排序。

我有两个数组

values = [1000, 2356, 3456778, 7645748, -2324, 348845.45, -2345666]

labels = ["ValA", "ValB", "ValC", "ValD", "ValE", "ValF", "ValG", "ValH"]

这些需要结合起来显示 [1000,ValA, etc],其中最大值首先出现。

如果没有内置的排序功能,我不知道如何继续。我尝试使用 Math.Max 循环遍历数组,但是当我组合这两个数组时,函数停止工作。

我不确定是将这两个单独的数组组合起来,还是将它们分开以便排序更简单,记住原始索引和标签的链接。

欢迎任何想法或问题,我真的很难过,而不是贸易开发人员,所以肯定有一些善良的灵魂可以支持我。

谢谢

预期产出

[7645748, ValD]
[3456778, ValC]
[348845.45, ValF]
[2356, ValB]
[2324, ValE]
[1000, ValA]
[-2345666, ValG]
4

4 回答 4

3

创建一个自定义对象数组并使用数据填充

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;
        };
    };
};
于 2013-04-04T10:39:35.707 回答
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"]

于 2019-12-20T05:19:22.970 回答
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]));
于 2020-12-19T08:09:00.653 回答
0
   // 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)
于 2021-10-23T12:26:53.450 回答