从 JSON 属性中选择随机值

2024-02-18

我有一个在标题中描述的任务。我不能在代码中的某个地方使用数组、循环和 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 文件而不是我编写的对象。

请帮忙!


伊万答案的变体,代码少得多。字符串化替换器 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/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]);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 JSON 属性中选择随机值 的相关文章

随机推荐

  • Clojure 应用映射和关键字参数销毁

    考虑具有以下签名的函数 defn make widget keys x y or x 10 y 20 将映射传递给函数的最佳方法是什么 例如 make widget x 100 or make widget y 200 x 0 我目前想到的
  • 正则表达式来验证逗号分隔的电子邮件地址?

    我需要验证电子邮件地址 可以是单个或多个以逗号分隔的地址 在我在正则表达式验证器中使用如下表达式之前 string exp w w w w w w 它正在验证多个或一个电子邮件地址 但同样的表达式在 C 中没有验证 它也表示对无效地址有效
  • IIS7-请求过滤模块配置为拒绝超过请求内容长度的请求

    我想上传图像 它在我的机器上运行良好 但是当我将我的网站放在 IIS7 服务器上供公众使用时 我无法上传任何内容 Error 请求过滤模块 用于拒绝以下请求 超过请求内容长度 最可能的原因 在Web服务器上配置请求过滤以拒绝请求 因为内容长
  • 如何为编辑操作指定 devise_parameter_sanitizer?

    我已将 Devise 添加到我的 Rails 4 应用程序中 并成功将用户名等添加到我的用户模型中 此外 我可以使用惰性方式存储这些字段 即 class ApplicationController lt ActionController B
  • libGDX:用一些枢轴打结的吊绳

    我正在尝试在 libGDX 中制作一根在其下端有一些物体的悬挂绳 绳子应该是这样的Box2D中的挂绳 http www emanueleferonato com 2009 10 05 basic box2d rope 我做了很多研究 lib
  • 如何让外部合并工具在 Linux 上与 svn 一起工作?

    如何获得基于 GUI 的合并工具以在 Linux 中使用命令行 SVN 我知道有很多选项 例如 meld svn Diff 等 所有这些都需要一个帮助程序脚本来允许 svn 在冲突解决期间调用外部程序 我按照给出的说明进行操作here ht
  • 将 WebRTC 与 WebWorker 结合使用

    我有兴趣将 webrtc 与 webworker 一起使用 是否可以 我尝试了 但没有成功 因为它没有找到 窗口 根据规格 1 https w3c github io mediacapture main dom navigator 2 ht
  • Apple 无法识别 imgur 的 HTTPS

    我有多个来自 imgur 的 HTTPS 链接 例如https i stack imgur com 9nSMi jpg https i stack imgur com 9nSMi jpg 我使用它作为我的原型应用程序的背景之一 但每当我在
  • WPF ComboBox...如何设置.Text 属性?

    有没有办法设置 Text直接使用 Wpf ComboBox 控件的属性吗 我的组合框绑定到List
  • 如何组合 Raphael javascript 库中的对象?

    抱歉问了一个很长的问题 但是就这样吧 我正在尝试修改此处演示周围的拖动形状 http raphaeljs com graffle html http raphaeljs com graffle html 该演示运行良好 我想做的是将文字放入
  • 在 ASP.Net 菜单中突出显示选定的选项卡

    我试图用不同的颜色突出显示 ASP NET 菜单中选定的选项卡 做到这一点似乎很简单 但首先我无法使其工作 其次我到目前为止找不到一个好的工作示例 ASP HTML div class clear hideSkiplink div
  • Firebase:部署到托管后仍然是旧版本,如何?

    我收到了一个在 firebase 上托管的相当原始的 React 应用程序 由其他人开发 进行维护 现在奇怪的事情发生了 我更改文件的内容 甚至简单的文本更改 运行部署 托管 我在 firebase 控制台中看到部署成功 仍然 页面内容仍然
  • 为独立应用程序创建 Homebrew 公式

    我正在尝试为不需要编译的应用程序创建一个自制公式 我尝试过浏览公式食谱 但我缺少一些使事情正常工作的东西 下面是我使用更通用文件名的用例 容器内部有两个文件 一个是应用程序的脚本 另一个是手册页文件 我们将使用以下文件名来保持通用 myap
  • 如何有条件地渲染 f:selectItem 标签?

    如何指定条件渲染
  • Python:setup.py Egg_info 失败,错误代码为 1

    我已经将 Python 2 7 x 更新到 3 6 但当我尝试安装任何软件包时仍然收到此消息 示例 Flask Kivy 命令 python setup py Egg info 失败 错误代码为 1 C Users Dev AppData
  • Boost.Filesystem 和 C++ 标准文件系统库有多相似?

    我需要一个文件系统库与支持 C 11 的编译器或支持 C 14 的编译器一起使用 所以它不能来自 C 17 现在 我知道进入 C 17 的文件系统库是基于 Boost Filesystem 的 但是 它们是否足够相似 足以让我使用 Boos
  • 表单中的 _lpchecked="1" 是什么意思?

    我开始做一些网络开发 我正在学习表单并进入这个领域 lpchecked 1 我在这个 StackOverflow 问题中找到了带有此字段的表单示例大文本输入导致 http post 失败 https stackoverflow com qu
  • 使用 C# 在 Windows 中集成特定文件类型的 Shell

    因此 我搜索了如何使用 C 对应用程序进行 shell 集成 将其添加到右键菜单 的指南 但我找不到如何仅针对特定文件类型执行此操作 我知道这是可能的 因为 WinRar 就是这样做的 那么我该怎么做呢 通常有两种方法可以实现这一点 注册表
  • 良好的加密哈希函数[重复]

    这个问题在这里已经有答案了 可能的重复 PHP 密码的安全哈希和盐 https stackoverflow com questions 401656 secure hash and salt for php passwords 我正在制作一
  • 从 JSON 属性中选择随机值

    我有一个在标题中描述的任务 我不能在代码中的某个地方使用数组 循环和 Object keys 我只能使用Math random JSON 文件 key item 1 item 2 item 3 key2 abc key3 123 我什至无法