Luc*_*emy 3 javascript shuffle object
我有这个对象:
{ foo: 1, bar: 2, cheese: 3 }
Run Code Online (Sandbox Code Playgroud)
我想要洗牌元素,所以它变成:
{ bar: 2, cheese: 3, foo: 1 }
Run Code Online (Sandbox Code Playgroud)
或者其他一些组合.有这个功能吗?这是因为我想在使用JSON.stringify它时产生不同的结果.我在互联网上找到的唯一答案是指在数组中改组对象.
谢谢.
JS对象属性没有内在顺序.大多数JS运行时保留了添加密钥的顺序,但这不是语言要求,您不应该依赖它.例如,JSON.stringify总是按字母顺序序列化键或随机化它们是完全有效的.
如果排序很重要,您可能会保留一组两个数组来跟踪键和值.
要随机化对象中属性的顺序,您可以访问键,将它们打乱,然后组装一个新对象。这是一个函数:
let obj = { "a":1, "b":2, "c":3, "d":4 }
function shuffleObject(obj){
// new obj to return
let newObj = {};
// create keys array
var keys = Object.keys(obj);
// randomize keys array
keys.sort(function(a,b){return Math.random()- 0.5;});
// save in new array
keys.forEach(function(k) {
newObj[k] = obj[k];
});
return newObj;
}
console.log(shuffleObject(obj));
console.log(shuffleObject(obj));
console.log(shuffleObject(obj));Run Code Online (Sandbox Code Playgroud)