Javascript - 无需排序即可排序

问题描述 投票:0回答:5

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]
javascript sorting multidimensional-array
5个回答
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;
        };
    };
};

0
投票

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"]


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

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)

0
投票
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;
}
© www.soinside.com 2019 - 2024. All rights reserved.