首页 > 解决方案 > 从 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 文件而不是我编写的对象。

请帮忙!

标签: javascriptjsonrandom

解决方案


用更少的代码改变伊万的答案。 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]);


推荐阅读