Javascript - 没有排序的排序

时间:2013-04-04 10:34:56

标签: javascript sorting multidimensional-array

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]

3 个答案:

答案 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]));