我想操纵对象 {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}我需要如何改进我的代码才能使该功能正常工作?
2 回答
偶然的你
TA贡献1841条经验 获得超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);
缥缈止盈
TA贡献2041条经验 获得超4个赞
通过采用你的算法,
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 中的值并返回它的增量。
添加回答
举报
0/150
提交
取消