You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JSONata中将值数组转换为含占位属性的对象

问题描述

需要将如下数组结构:

[
  "apple",
  "banana",
  "carrot"
]

转换为键值对对象结构:

{
  "apple": "null",
  "banana": "null",
  "carrot": "null"
}

由于运行环境是基于键名而非值来实现特定功能,尝试用JavaScript风格的$reduce函数实现转换,代码如下:

$reduce($$, function($acc, $cur) {
  $acc[$cur] = 'null'
}, {})

但上述代码仅返回false,查阅相关文档后未找到合适的对象构建方法,寻求解决办法。

解决方案

问题出在$reduce的回调函数没有返回更新后的累加器。很多自定义或专用运行环境中的reduce实现要求回调必须返回累加器,否则会默认返回false或未定义值。

修改代码,在回调末尾返回累加器$acc即可:

$reduce($$, function($acc, $cur) {
  $acc[$cur] = 'null'
  return $acc  // 必须返回更新后的累加器
}, {})

如果你的运行环境支持ES6箭头函数和扩展运算符,也可以用更简洁的写法:

$$.reduce((acc, cur) => ({...acc, [cur]: 'null'}), {})

不过第一种写法兼容性更好,适配大部分要求返回累加器的reduce实现。

内容的提问来源于stack exchange,提问作者bigbaws225

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 11:08:09