如何将属性值转换为键? [复制]
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?