我要通过以下特定步骤(我将将对象 {a: 1, b: 20, c: 3, d: 4, e: 1, f: 4}
放入此{a: 1, e: 1, c: 3, d: 4, f: 4, b:20}
(按升序对对象进行数字排序)知道必须有更简单,更高级的方法):
定义一个名为“ sort”的函数,该函数将一个对象作为参数,并在其中声明一个名为“ arr”的空数组。
在对象内循环,对于每次迭代,将一个包含键和值的数组推入'arr'。
通过对象值(在嵌套数组中的第一个位置)对数组进行数字排序
创建一个名为“ newObj”的空对象。
遍历数组,并为每次迭代将第一个和第二个元素分别指定为我们的“ newobJ”的键和值
返回“ 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
}
我需要如何改进代码才能使该功能正常工作?
答案 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中的值并返回其差值。