javascript - 从 JSON 属性中选择随机值
问题描述
我有一个我在标题中描述的任务。我绝不能在我的代码中的某处使用数组、循环和 Object.keys。我只能使用 Math.random。
JSON文件:
{
"key": "item 1, item 2, item 3",
"key2": "abc",
"key3": "123"
}
如果没有我描述的技术,我什至无法想象如何做到这一点。如果任务支持 Object.keys 这将非常简单(但我不能把它写成答案)。
我可以从 JSON 接收的对象:
let obj = {
key: "item 1, item 2, item 3",
key2: "abc",
key3: "123"
};
我用 Object.keys 选择随机值的函数(我不能使用):
let randomProperty = function (obj) {
let keys = Object.keys(obj);
return obj[keys[ keys.length * Math.random() << 0]];
};
可以使用 JSON.stringify 和 parse,因为它必须是 JSON 文件而不是我编写的对象。
请帮忙!
解决方案
用更少的代码改变伊万的答案。 Stringify 替换器第一次计算参数,然后第二次选择一个。
let obj = {
key: "item 1, item 2, item 3",
key2: "abc",
key3: "123"
};
let k, n = 0;
JSON.stringify(obj, (key, value) => (key && ++n || value));
n *= Math.random();
JSON.stringify(obj, (key, value) => (key && --n | 0 || (k = key) || value));
console.log(obj[k]);
推荐阅读
- java - 如何从 .py 脚本执行 .class 文件(java)?
- python - 熊猫 iterrows 的替代品?
- jquery - jQuery checkbox.prop 无法触发 checkbox.on('change', function)
- excel - 如何获取 PivotTable 类的 PivotFields 属性?
- python - 如何使用 kivy 中的 id 更改图像
- postgresql-12 - 在 postgresql-12 的 row_number 之后出现括号错误
- c++ - 如何设置 Visual Studio 以将程序崩溃的代码行输出到控制台?
- python - Remove recurrent (overlapping) slashes from string
- java - 如何防止布局自动打开键盘?
- html - HTML:如何对齐左、中和右页脚短语。引导程序