从一个javascript对象中打印5个随机键/值对
print 5 random key/value pairs from a javascript object
我需要选择&从一个javascript对象中打印5个随机键/值对。目前,我遍历如下对象:
$.each(object, function(key, val) {
...
});
但是,我如何从这个对象中打印5个随机键值对呢?问题是我不知道这个物体的长度,所以我不能通过计算一个随机的起始位置来完成;从那里开始抽取5对。
查找对象中的项数并不困难。您只需要使用Object.keys
。这将获取一个数组,该数组包含对象中的所有键名。
var keys = Object.keys(object),
length = keys.length;
然后你可能会想随机选择物品,也许是这样的:
var i,
result = [];
for (i = 0; i < 5; i++) {
result.push(object[keys[Math.floor(Math.random() * length)]]);
}
如果对象不是太大,可以将数据复制到一个常规数组中并对其进行混洗:
function fisherYates(array){
var i=array.length;
while(i--){
var j=Math.floor( Math.random() * (i+1) );
var tmp=array[i];
array[i]=array[j];
array[j]=tmp;
}
}
var object = {
firstName: "Jim",
lastName: "Smith",
city: "London",
country: "UK",
age: 33,
height: 170,
score: 123,
active: true
}
var deck = [];
$.each(object, function(key, val){
var o = {};
o[key] = val;
deck.push(o);
});
fisherYates(deck);
var selection = deck.slice(0, 5);
console.log(selection);
Object.keys(object)
将为您提供对象中所有密钥的数组
var arrayOfAllKeys = Object.keys(object);
for(var i=0; i<5; i++){
var rnd = Math.floor(Math.random()*arrayOfAllKeys.length);
var objKey = arrayofAllKeys[rnd];
alert( "key: " + objKey + " value: " + object[objKey]);
}
你可以用模拟Object.keys(对象)
var arrayOfKeys = [];
$.each(object, function(key, value){
arrayOfKeys.push(key);
}
相关文章:
- Javascript:将多个表打印成一行,然后再打印
- 设置选项对象关键点:值对以实现带第二个y轴的动态打印
- 跳过x个字符后,如何打印特定字符串
- NodeJS readline有时会打印回第一个输入行(但并不总是,看起来是随机的)
- 如何在变量中存储多个模式参数并在 JavaScript 中打印该变量的值
- PDF.js - 一次打印多个文档
- Javascript:将多个表单输入打印到一个文本区域
- 两个javascript网络工作者连续打印输出-为什么不同时打印呢
- Grails:多个加载ajax调用,但只有一个打印到控制台
- 如何在数组中打印值 在数组中,在多个对象内
- HTML5两个表单将分别打印出来
- For循环只打印一个DIV标记.不是8个DIV标签
- 正则表达式中的多个匹配项并存储或打印它
- 如何将52个随机生成的数字打印到控制台
- Javascript 打印多个网页 iFrame 内容(全部打印按钮)
- JavaScript:打印前 12 个月 - “March”打印两次
- 如何从第二个打印页面开始打印网页页脚
- 网页 在两个打印页面中打印
- 如何使用Javascript连续执行多个打印任务
- 为什么通过javascript发送多个打印被firefox阻止,以及如何禁用它