javascript - 如何在数组中的数组的第二个值之后排序?

标签 javascript arrays sorting object

<分区>

我想操纵一个对象 {a: 1, b: 20, c: 3, d: 4, e: 1, f: 4} into this {a: 1, e: 1, c: 3, d: 4, f: 4, b:20} (按升序对对象进行排序) 在这些具体步骤(我知道一定有更简单、更高级的方法):

  1. 定义一个名为“sort”的函数,它将一个对象作为参数,并在其中声明一个名为“arr”的空数组。

  2. 在对象内部循环,每次迭代都会将包含键和值的数组推送到“arr”。

  3. 按对象值(嵌套数组中的第一个位置)对数组进行数字排序

  4. 创建一个名为“newObj”的空对象。

  5. 遍历数组并在每次迭代中将第一个和第二个元素分别作为键和值分配给我们的“newobJ”

  6. 返回“newObj”。

这就是我目前所拥有的。代码在排序部分有问题,但也许还有其他我还不知道的事情。

function sort(object) {
    var arr = []
    var newObj = {}

    Object.entries(object).forEach(function(element, index) {
        arr.push(element)
    })

    arr[index][1].sort(function(a, b){return b-a});  

    arr.forEach(function([key, value], index) {
        newObj[key] = value
    })
    return newObj
}

我需要如何改进我的代码才能使该功能发挥作用?

最佳答案

您可以获取条目,按第二个索引排序并获得一个新对象。

var object = { a: 1, b: 20, c: 3, d: 4, e: 1, f: 4 },
    result = Object.fromEntries(
        Object
            .entries(object)
            .sort((a, b) => a[1] - b[1])
    );

console.log(result);

通过采用你的算法,

arr[index][1].sort(function(a, b){return b-a});  

你需要对整个数组进行排序

arr.sort(function (a, b) { return a[0] - b[0]; });

Array#sort接受一个回调,它有两个参数,每个参数一个,并返回一个反射(reflect)两个元素所需顺序的值。

在这种情况下,通过获取一个条目数组,例如有两个数组作为参数,例如

['a', 1]
['b', 20]

从这个数组中获取索引 1 的值并返回它的增量。

关于javascript - 如何在数组中的数组的第二个值之后排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57902552/

相关文章:

java - 虽然我实现的快速排序方法适用于整数和字符串数组,但此方法不适用于汽车数组

javascript - 数组的性能包括与映射到对象并在 JavaScript 中访问它

javascript - 如何更改 mouseup 上的光标?

javascript - PrimeNG 数据表日期范围过滤器

javascript - WicketPDF 渲染表未正确对齐且页脚位于最后一页

arrays - 近似排序算法

php - 特定数组排序

javascript - 从 HTML5 FormData 对象中获取所有项目 - HTML5

java - 如何使用另一个 JLabel 控制 Java Swing JLabel

java - “比较方法违反了其一般契约”,没有传递错误的迹象