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

jq技术问题:如何从已知键的对象值生成新对象?

解决思路

核心需求是用原对象中已知键对应的值构建新对象(第一个值作为键,第二个作为值)。map()是数组专属方法,对象无法直接调用,这应该是你之前尝试失败的原因。以下是几种直接可行的实现方式:

方法一:直接取值构建(最直观)

既然明确知道原对象的键,直接通过键获取对应的值,再用方括号语法把值作为新对象的键即可:

const originalObj = { "k1": "v1", "k2": "v2" };
// 已知键为k1、k2
const newObj = {
  [originalObj.k1]: originalObj.k2
};
console.log(newObj); // 输出 { "v1": "v2" }

方法二:提取值数组后构建(适配多键场景)

如果原对象键的数量不确定,但值的顺序明确,可先把对象的值提取为数组,再按顺序组合:

const originalObj = { "k1": "v1", "k2": "v2" };
const values = Object.values(originalObj); // 得到 ["v1", "v2"]
const newObj = {
  [values[0]]: values[1]
};
console.log(newObj); // 输出 { "v1": "v2" }

为什么map()不适用?

map()仅能处理数组,对象无法直接调用该方法。如果强行用map,需要先把对象转成键值对数组(比如Object.entries()),但对于当前需求来说完全是绕路,没必要这么做。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:27:02