如何将属性值转换为键? [复制]

Posted

技术标签:

【中文标题】如何将属性值转换为键? [复制]【英文标题】:How to transform attribute values into keys? [duplicate] 【发布时间】:2019-04-21 12:05:17 【问题描述】:

我有一个 JSON 格式。

var input = [
status:"good", state: "NY",
status:"bad", state: "FL",
status:"decent", state: "CA"
]

我想把它转换成如下格式的对象:

myObj = NY:"good",FL:"bad",CA:"decent"

我想要这个的原因是我可以轻松获取 myObj.NY 值。

【问题讨论】:

【参考方案1】:

短小精悍

var input = [
  status:"good", state: "NY",
  status:"bad", state: "FL",
  status:"decent", state: "CA"
]
var obj = ;
input.forEach(function(k) 
  obj[k.state] = k.status;
);
console.log(obj);

【讨论】:

【参考方案2】:

您可以尝试使用“Object.assign”和“Array.map”以及如下所示来达到您想要的结果

var input = [
status:"good", state: "NY",
status:"bad", state: "FL",
status:"decent", state: "CA"
]

let res = Object.assign(...input.map(( state, status) => ( [state]: status )))

console.log(res)

【讨论】:

【参考方案3】:
var myobj = ; 
Input.forEach(function (i)  myobj[i.status] = i.state;

【讨论】:

Input.foreach 应该是input.forEach【参考方案4】:

您可以使用数组解构对该数组执行简单的forEach() 循环,以使您的代码简短而简单。

var input = [
    status: "good",
    state: "NY"
  ,
  
    status: "bad",
    state: "FL"
  ,
  
    status: "decent",
    state: "CA"
  
];
var res = ;
input.forEach((state, status)=> res[state] = status);
console.log(res);

【讨论】:

【参考方案5】:

使用Array.prototype.reduce()

var myObj = input.reduce( (r,x) =>  r[x.status] = x.state ; return r , )

【讨论】:

【参考方案6】:

这也可以使用map 来完成,通过[key] 语法分配对象键:

var input = [
status:"good", state: "NY",
status:"bad", state: "FL",
status:"decent", state: "CA"
]
var myObj = Object.assign(, ...input.map(item => (
    [item.state]: item.status
)));
console.log(myObj);

见https://jsfiddle.net/gL6bcqm1/1/

【讨论】:

myObj 将是一个对象数组,而不是单个对象。这里也不需要使用Object.assign 哎呀,对不起,误解了这个问题。感谢您指出!

以上是关于如何将属性值转换为键? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何解压缩数据框列中存在的 json 的键,值将转换为键作为列,而使用 python 将其值转换为列?

如何在 Python 中将表行 PCollections 转换为键、值 PCollections?

正则表达式将 SQL INSERT 语句转换为键值字典

将 XML 字符串 API 响应转换为键值对象 C#

javascript/jQuery:如何动态地将属性值转换为对象键? [复制]

如何将通量元素转换为键映射单声道