如何解决当数组中有键时如何更新嵌套键 javascript
这样的键数组let keys = ["vehicleinformation","VehicleBlock|1","DriverAssociation|1","DriverInvolvedAssociation"]
已经有一个 JSON 数据存储在一个变量中,我必须更新一个数据对象。
data['vehicleinformation']['VehicleBlock'][1]['DriverAssociation'][1]['DriverInvolvedAssociation'] = value;
有没有办法在javascript中实现这一点? 数据初始值:
数据 = {};
预期结果:
data = {
vehicleinformation: {
VehicleBlock: [
{},{
DriverAssociation: [
{},{DriverInvolvedAssociation: value},],},};
解决方法
keys = ["vehicleInformation","VehicleBlock|1","DriverAssociation|1","DriverInvolvedAssociation"]
data = {
vehicleInformation: {
VehicleBlock: [
0,{
DriverAssociation: [
0,{},],},};
let value = 42;
let keysToLast = keys.flatMap(key => key.split("|"));
let lastKey = keysToLast.pop();
keysToLast.reduce((a,e) => a[e],data)[lastKey] = value;
console.log(data);
数组键就像对象键一样只是字符串,没有理由区别对待它们(因此flatMap
)。然后只需reduce
找到您需要设置其属性的对象,并设置它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。