How to reverse an object in javascript?
本问题已经有最佳答案,请猛点这里访问。
我想在javascript中反转一个对象。例如:
输入:
输出:
我尝试过"array.prototype.reverse.apply(obj)",但无法获得结果。
1 2 3 | var obj ={1: 'banana', 2: 'apple',3:'orange' }; var res =Array.prototype.reverse.apply(obj); console.log(res); // return the same object, not reverse |
array.prototype.reverse()的其他用法是什么?
您可以先将类似数组的对象转换为实际数组,然后使用
1 2 | Object.assign([], {1:'banana', 2:'apple', 3:'orange'}).reverse(); // ["orange","apple","banana", <1 empty slot> ] |
由于第一个索引是
或者,如果您想借用
1 2 | Array.prototype.reverse.call({1:'banana', 2:'apple', 3:'orange', length:4}); // {0:"orange", 1:"apple", 3:"banana", length:4} |
注意,它将返回与对象对象对象相同的完全数组,因此它不是真正的数组。然后可以使用
这是我的对象旋转实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function reverseObject(object) { var newObject = {}; var keys = []; for (var key in object) { keys.push(key); } for (var i = keys.length - 1; i >= 0; i--) { var value = object[keys[i]]; newObject[keys[i]]= value; } return newObject; } |
这样做没有意义,因为对象的属性没有顺序。对象中的属性顺序在javascript中没有保证;
自ECMAScript 2015以来,使用地图对象可能是一种替代方法。地图与对象有一些相似之处,并保证键顺序:
1 2 3 4 5 6 7 | var reverseObj = function(object) { var NewObj = {}, keysArr = Object.keys(object); for (var i = keysArr.length-1; i >= 0; i--) { NewObj[keysArr[i]] = object[keysArr[i]]; } return NewObj; } |