选择一个随机的 json 对象
Posted
技术标签:
【中文标题】选择一个随机的 json 对象【英文标题】:Picking a random json object 【发布时间】:2015-11-10 03:01:33 【问题描述】:我有 json 数据。
[
["Mango","M"],
["Lychee","L"],
["Pineapple","P"],
["Banana","B"]
]
我需要能够随机选择一个数组项目(例如["Pineapple","P"]
)。如何进行随机选择?
var alphabetNum = "";
$.ajax (
url:"getalphabet.json"
).done(function(data)
alphabetNum = data;
);
【问题讨论】:
1) 你有数组 2) 数组是整数索引 3) 产生随机数 [0, length) 4) alphabetNum[i] data 是你要随机选择的数组吗? 那不是 JSON 对象。 @IfTrue 它实际上是一个有效的 JSON(第 2 页 ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf) @Audrey 我并不是说它不是有效的 JSON,我说它不是原始帖子所说的 JSON“对象”。我只是想确保如果 OP 不知道有区别,他们可以出去学习数组和对象之间的区别。您可以通过点击 OP 中的“edited [time past] ago”查看编辑前的历史记录。 【参考方案1】:只需将Math.random()
和数组的长度作为因子。
var array = [
["Mango","M"],
["Lychee","L"],
["Pineapple","P"],
["Banana","B"]
];
var randomItem = array[Math.random() * array.length | 0];
// take only the element with index 0
alert(randomItem[0]);
【讨论】:
看起来不错。谢谢 :)。你能解释一下最后一行的| 0
吗?
short:Math.floor()
的缩写形式。 long:它强制将值设置为整数并按位应用或使用 0。
这个| 0
不是最好的主意,你只是保存了几个字符,这会破坏可读性,这样的陷阱没有充分的理由,Math.floor
对每个人来说都是明确而清晰的。
很久以前我在想(这是教给我的),就可读性而言,捷径是邪恶的。现在,我认为应该在有意义的地方使用该语言的特性。我不认为应该避免不寻常的解决方案,因为我无法(快速)收集有关该功能的信息。只要没有副作用,而且我不能在这里发现一些,我就去。
感谢尼娜的澄清。另外使用您的解决方案,我将如何从这个随机选择中获取第一个值?例如Pineapple
以上是关于选择一个随机的 json 对象的主要内容,如果未能解决你的问题,请参考以下文章