如何对数组中数组的第二个值进行排序?

时间:2019-09-12 08:19:25

标签: javascript arrays sorting object

我要通过以下特定步骤(我将将对象 {a: 1, b: 20, c: 3, d: 4, e: 1, f: 4}放入此{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
}

我需要如何改进代码才能使该功能正常工作?

1 个答案:

答案 0 :(得分:3)

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

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进行回调,它具有两个参数,每个参数一个,并返回一个反映两个元素所需顺序的值。

在这种情况下,通过采用条目数组,例如,您可以将两个数组作为参数,例如

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

从此数组中获取索引1中的值并返回其差值。