微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当数组中有键时如何更新嵌套键 javascript

如何解决当数组中有键时如何更新嵌套键 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 举报,一经查实,本站将立刻删除。