我需要创建按值排序的动态对象,但我不知道属性的名称,我试图使用_.sortby
但是这不起作用,因为我不知道属性
初始对象:
{
134:0,
135:1,
136:2,
137:3,
138:4,
139:5,
140:15,
141:16,
142:17,
143:18,
144:19,
145:6,
146:7,
147:11,
148:12,
149:13,
150:14,
470:10,
471:20,
768:8,
769:9,
770:21,
771:22,
772:23,
773:24,
774:25
}
最终对象必须是这样的:
{
134:0,
135:1,
136:2,
137:3,
138:4,
139:5,
145:6,
146:7,
768:8,
769:9,
470:10,
147:11,
148:12,
149:13,
150:14,
140:15,
141:16,
142:17,
143:18,
144:19,
471:20,
770:21,
771:22,
772:23,
773:24,
774:25
}
答案 0 :(得分:0)
您可能希望对Object键进行排序,然后将它们映射到它们的值:
var obj={134:0 135:1 136:2 137:3 138:4 139:5 140:15 141:16 142:17};
获取键后的值:
console.log(Object.keys(obj).sort().map(key=>obj[key]));//[0,1,2,3,4,5,15,16,17]
请注意,您无法排序对象键。这就是为什么上面的代码返回一个数组。
答案 1 :(得分:0)
创建一个索引为对象属性值的数组,值为属性名称。然后,此数组的顺序将是您在结果中所需的属性的顺序。
var object = {
134:0,
135:1,
136:2,
137:3,
138:4,
139:5,
140:15,
141:16,
142:17,
143:18,
144:19,
145:6,
146:7,
147:11,
148:12,
149:13,
150:14,
470:10,
471:20,
768:8,
769:9,
770:21,
771:22,
772:23,
773:24,
774:25
};
var array = [];
for (var key in object) {
array[object[key]] = key;
}
var newObject = {};
array.forEach(function(el, i) {
newObject[el] = i;
});
console.log(newObject);

答案 2 :(得分:0)