如何从多维数组javascript中删除对象?

如何从多维数组javascript中删除对象?,javascript,jquery,vue.js,vuejs2,vue-component,Javascript,Jquery,Vue.js,Vuejs2,Vue Component,我的案子和其他案子有点不同 我有一个包含如下数组的对象: var doctors = { '2bf169c6-bc51-4dc6-1234-cf81e611b6fd': [ { doctor_id: "2bf169c6-bc51-4dc6-1234-cf81e611b6fd", name: "dr. Benjamin", specialization_id: "5f8e2525-65fa-4a92-2312-fcd0323ad439",

我的案子和其他案子有点不同

我有一个包含如下数组的对象:

var doctors = {
  '2bf169c6-bc51-4dc6-1234-cf81e611b6fd': [
    {
      doctor_id: "2bf169c6-bc51-4dc6-1234-cf81e611b6fd",
      name: "dr. Benjamin",
      specialization_id: "5f8e2525-65fa-4a92-2312-fcd0323ad439",
      specialization_name: "General practitioners",
      hospital_id: "63c6af56-bb9a-4962-6677-454d3345630d",
      hospital_name: "Hospital A"
    }
  ],
  'd8e31868-ebec-4af0-4321-767aa696f91a': [
    {
      doctor_id: "d8e31868-ebec-4af0-4321-767aa696f91a",
      name: "dr. Theo",
      specialization_id: "329de195-1ab6-4a43-3322-acfde447fec3",
      specialization_name: "Internal Medicine",
      hospital_id: "39764039-37b9-4176-4455-ef7b2e124ba4",
      hospital_name: "Hospital B"
    },
    {
      doctor_id: "d8e31868-ebec-4af0-4321-767aa696f91a",
      name: "dr. Theo",
      specialization_id: "329de195-1ab6-4a43-3322-acfde447fec3",
      specialization_name: "Internal Medicine",
      hospital_id: "65a60870-beab-4925-3322-4a5246e26d6a",
      hospital_name: "Hospital C"
    }
  ], 
  '0a24e765-3e3c-45e6-1122-8671eb3c0439': [
    {
      doctor_id: "0a24e765-3e3c-45e6-1122-8671eb3c0439",
      name: "dr. John",
      specialization_id: "5f8e2525-65fa-4a92-2312-fcd0323ad439",
      specialization_name: "General practitioners",
      hospital_id: "153b75ee-dc07-4290-2121-d4d28457780f",
      hospital_name: "Hospital D",
    },
    {
      doctor_id: "0a24e765-3e3c-45e6-1122-8671eb3c0439",
      name: "dr. John",
      specialization_id: "5f8e2525-65fa-4a92-2312-fcd0323ad439",
      specialization_name: "General practitioners",
      hospital_id: "153b75ee-dc07-4290-2121-d4d28457780f",
      hospital_name: "Hospital E",
    }
  ],
  '4990a698-afba-483b-5544-ecc5201e45c3': [
    {
      doctor_id: "4990a698-afba-483b-5544-ecc5201e45c3",
      name: "dr. Frank",
      specialization_id: "97ce4804-6508-4d65-dd33-70a3d14604ae",
      specialization_name: "Neurologist",
      hospital_id: "c279e92e-57c3-47ad-5656-397b4fe8b6f7",
      hospital_name: "Hospital F",
    }
  ]
};
const newDoctors = {}
for (let item in doctors) {
  for (let i = 0; i < doctors[item].length; i++) {
    // const paramsSchedule = {
    //   hospitalId: doctors[item][i].hospital_id,
    //   doctorId: doctors[item][i].doctor_id
    // }
    // const promiseSchedule = this.getDataSchedule(paramsSchedule) // call vuex store and api
    // await promiseSchedule
    // const dataSchedule = this.dataSchedule.items
    // doctors[item][i].isExistSchedule = dataSchedule.isExistSchedule
    /* below I display the data statically so that you more easily understand */
    doctors['2bf169c6-bc51-4dc6-1234-cf81e611b6fd'][0].isExistSchedule = false
    doctors['d8e31868-ebec-4af0-4321-767aa696f91a'][0].isExistSchedule = true
    doctors['d8e31868-ebec-4af0-4321-767aa696f91a'][1].isExistSchedule = false
    doctors['0a24e765-3e3c-45e6-1122-8671eb3c0439'][0].isExistSchedule = true
    doctors['0a24e765-3e3c-45e6-1122-8671eb3c0439'][1].isExistSchedule = true
    doctors['4990a698-afba-483b-5544-ecc5201e45c3'][0].isExistSchedule = true

  }
  newDoctors[item] = doctors[item]
}
var doctors = {
  'd8e31868-ebec-4af0-4321-767aa696f91a': [
    {
      doctor_id: "d8e31868-ebec-4af0-4321-767aa696f91a",
      name: "dr. Theo",
      specialization_id: "329de195-1ab6-4a43-3322-acfde447fec3",
      specialization_name: "Internal Medicine",
      hospital_id: "39764039-37b9-4176-4455-ef7b2e124ba4",
      hospital_name: "Hospital B"
    },
  ], 
  '0a24e765-3e3c-45e6-1122-8671eb3c0439': [
    {
      doctor_id: "0a24e765-3e3c-45e6-1122-8671eb3c0439",
      name: "dr. John",
      specialization_id: "5f8e2525-65fa-4a92-2312-fcd0323ad439",
      specialization_name: "General practitioners",
      hospital_id: "153b75ee-dc07-4290-2121-d4d28457780f",
      hospital_name: "Hospital D",
    },
    {
      doctor_id: "0a24e765-3e3c-45e6-1122-8671eb3c0439",
      name: "dr. John",
      specialization_id: "5f8e2525-65fa-4a92-2312-fcd0323ad439",
      specialization_name: "General practitioners",
      hospital_id: "153b75ee-dc07-4290-2121-d4d28457780f",
      hospital_name: "Hospital E",
    }
  ],
  '4990a698-afba-483b-5544-ecc5201e45c3': [
    {
      doctor_id: "4990a698-afba-483b-5544-ecc5201e45c3",
      name: "dr. Frank",
      specialization_id: "97ce4804-6508-4d65-dd33-70a3d14604ae",
      specialization_name: "Neurologist",
      hospital_id: "c279e92e-57c3-47ad-5656-397b4fe8b6f7",
      hospital_name: "Hospital F",
    }
  ]
};
我想将ISEXISTSSCDULE密钥添加到数组中。isExistSchedule密钥是从vuex存储中获取的。在本例中,我将向您展示硬编码的ExistSchedule,以便您更容易理解

我的代码如下:

var doctors = {
  '2bf169c6-bc51-4dc6-1234-cf81e611b6fd': [
    {
      doctor_id: "2bf169c6-bc51-4dc6-1234-cf81e611b6fd",
      name: "dr. Benjamin",
      specialization_id: "5f8e2525-65fa-4a92-2312-fcd0323ad439",
      specialization_name: "General practitioners",
      hospital_id: "63c6af56-bb9a-4962-6677-454d3345630d",
      hospital_name: "Hospital A"
    }
  ],
  'd8e31868-ebec-4af0-4321-767aa696f91a': [
    {
      doctor_id: "d8e31868-ebec-4af0-4321-767aa696f91a",
      name: "dr. Theo",
      specialization_id: "329de195-1ab6-4a43-3322-acfde447fec3",
      specialization_name: "Internal Medicine",
      hospital_id: "39764039-37b9-4176-4455-ef7b2e124ba4",
      hospital_name: "Hospital B"
    },
    {
      doctor_id: "d8e31868-ebec-4af0-4321-767aa696f91a",
      name: "dr. Theo",
      specialization_id: "329de195-1ab6-4a43-3322-acfde447fec3",
      specialization_name: "Internal Medicine",
      hospital_id: "65a60870-beab-4925-3322-4a5246e26d6a",
      hospital_name: "Hospital C"
    }
  ], 
  '0a24e765-3e3c-45e6-1122-8671eb3c0439': [
    {
      doctor_id: "0a24e765-3e3c-45e6-1122-8671eb3c0439",
      name: "dr. John",
      specialization_id: "5f8e2525-65fa-4a92-2312-fcd0323ad439",
      specialization_name: "General practitioners",
      hospital_id: "153b75ee-dc07-4290-2121-d4d28457780f",
      hospital_name: "Hospital D",
    },
    {
      doctor_id: "0a24e765-3e3c-45e6-1122-8671eb3c0439",
      name: "dr. John",
      specialization_id: "5f8e2525-65fa-4a92-2312-fcd0323ad439",
      specialization_name: "General practitioners",
      hospital_id: "153b75ee-dc07-4290-2121-d4d28457780f",
      hospital_name: "Hospital E",
    }
  ],
  '4990a698-afba-483b-5544-ecc5201e45c3': [
    {
      doctor_id: "4990a698-afba-483b-5544-ecc5201e45c3",
      name: "dr. Frank",
      specialization_id: "97ce4804-6508-4d65-dd33-70a3d14604ae",
      specialization_name: "Neurologist",
      hospital_id: "c279e92e-57c3-47ad-5656-397b4fe8b6f7",
      hospital_name: "Hospital F",
    }
  ]
};
const newDoctors = {}
for (let item in doctors) {
  for (let i = 0; i < doctors[item].length; i++) {
    // const paramsSchedule = {
    //   hospitalId: doctors[item][i].hospital_id,
    //   doctorId: doctors[item][i].doctor_id
    // }
    // const promiseSchedule = this.getDataSchedule(paramsSchedule) // call vuex store and api
    // await promiseSchedule
    // const dataSchedule = this.dataSchedule.items
    // doctors[item][i].isExistSchedule = dataSchedule.isExistSchedule
    /* below I display the data statically so that you more easily understand */
    doctors['2bf169c6-bc51-4dc6-1234-cf81e611b6fd'][0].isExistSchedule = false
    doctors['d8e31868-ebec-4af0-4321-767aa696f91a'][0].isExistSchedule = true
    doctors['d8e31868-ebec-4af0-4321-767aa696f91a'][1].isExistSchedule = false
    doctors['0a24e765-3e3c-45e6-1122-8671eb3c0439'][0].isExistSchedule = true
    doctors['0a24e765-3e3c-45e6-1122-8671eb3c0439'][1].isExistSchedule = true
    doctors['4990a698-afba-483b-5544-ecc5201e45c3'][0].isExistSchedule = true

  }
  newDoctors[item] = doctors[item]
}
var doctors = {
  'd8e31868-ebec-4af0-4321-767aa696f91a': [
    {
      doctor_id: "d8e31868-ebec-4af0-4321-767aa696f91a",
      name: "dr. Theo",
      specialization_id: "329de195-1ab6-4a43-3322-acfde447fec3",
      specialization_name: "Internal Medicine",
      hospital_id: "39764039-37b9-4176-4455-ef7b2e124ba4",
      hospital_name: "Hospital B"
    },
  ], 
  '0a24e765-3e3c-45e6-1122-8671eb3c0439': [
    {
      doctor_id: "0a24e765-3e3c-45e6-1122-8671eb3c0439",
      name: "dr. John",
      specialization_id: "5f8e2525-65fa-4a92-2312-fcd0323ad439",
      specialization_name: "General practitioners",
      hospital_id: "153b75ee-dc07-4290-2121-d4d28457780f",
      hospital_name: "Hospital D",
    },
    {
      doctor_id: "0a24e765-3e3c-45e6-1122-8671eb3c0439",
      name: "dr. John",
      specialization_id: "5f8e2525-65fa-4a92-2312-fcd0323ad439",
      specialization_name: "General practitioners",
      hospital_id: "153b75ee-dc07-4290-2121-d4d28457780f",
      hospital_name: "Hospital E",
    }
  ],
  '4990a698-afba-483b-5544-ecc5201e45c3': [
    {
      doctor_id: "4990a698-afba-483b-5544-ecc5201e45c3",
      name: "dr. Frank",
      specialization_id: "97ce4804-6508-4d65-dd33-70a3d14604ae",
      specialization_name: "Neurologist",
      hospital_id: "c279e92e-57c3-47ad-5656-397b4fe8b6f7",
      hospital_name: "Hospital F",
    }
  ]
};
如何使代码看起来像这样


我试过了,但没用。这种情况非常复杂

您可以使用
Array.prototype.filter
过滤掉元素
让医生来={
“2bf169c6-bc51-4dc6-1234-cf81e611b6fd”:[
{
医生编号:“2bf169c6-bc51-4dc6-1234-cf81e611b6fd”,
姓名:“本杰明博士”,
专业化标识:“5f8e2525-65fa-4a92-2312-fcd0323ad439”,
专业名称:“全科医生”,
医院编号:“63c6af56-bb9a-4962-6677-454d3345630d”,
医院名称:“A医院”,
I:错误
}
],
‘d8e31868-ebec-4af0-4321-767aa696f91a’:[
{
医生id:'d8e31868-ebec-4af0-4321-767aa696f91a',
姓名:“西奥博士”,
专业化标识:“329de195-1ab6-4a43-3322-acfde447fec3”,
专业名称:“内科学”,
医院id:'39764039-37b9-4176-4455-ef7b2e124ba4',
医院名称:“B医院”,
我的时间表是正确的
},
{
医生id:'d8e31868-ebec-4af0-4321-767aa696f91a',
姓名:“西奥博士”,
专业化标识:“329de195-1ab6-4a43-3322-acfde447fec3”,
专业名称:“内科学”,
医院编号:“65a60870-beab-4925-3322-4a5246e26d6a”,
医院名称:“C医院”,
I:错误
}
],
‘0a24e765-3e3c-45e6-1122-8671eb3c0439’:[
{
医生id:'0a24e765-3e3c-45e6-1122-8671eb3c0439',
姓名:“约翰博士”,
专业化标识:“5f8e2525-65fa-4a92-2312-fcd0323ad439”,
专业名称:“全科医生”,
医院编号:“153b75ee-dc07-4290-2121-d4d28457780f”,
医院名称:“D医院”,
我的时间表是正确的
},
{
医生id:'0a24e765-3e3c-45e6-1122-8671eb3c0439',
姓名:“约翰博士”,
专业化标识:“5f8e2525-65fa-4a92-2312-fcd0323ad439”,
专业名称:“全科医生”,
医院编号:“153b75ee-dc07-4290-2121-d4d28457780f”,
医院名称:“E医院”,
我的时间表是正确的
}
],
“4990a698-afba-483b-5544-ecc5201e45c3”:[
{
医生id:'4990a698-afba-483b-5544-ecc5201e45c3',
姓名:“弗兰克博士”,
专业识别号:“97ce4804-6508-4d65-dd33-70a3d14604ae”,
专业名称:“神经科医生”,
医院编号:“c279e92e-57c3-47ad-5656-397b4fe8b6f7”,
医院名称:“F医院”,
我的时间表是正确的
}
]
}
让updatedDocs=Object.fromEntries(Object.entries({…doctors}).map([key,value])=>([key,[…value].filter(e=>e.isExistSchedule)]).filter(e=>e[1].length))

console.log(updatedocs)
如果数组为空,我也想删除父级。因为
2bf169c6-bc51-4dc6-1234-cf81e611b6fd
有空数组,所以我想删除它,谢谢。我想再问一次。它形成了一个新的循环?是否可以将其添加到现有循环中?因此,无需再次进行循环。这可能是一个漫长的过程。因为很多循环不,它不是一个循环在另一个循环中,而是串行的,所以它不会增加复杂性,但是,是的,你可以把所有的逻辑放在一个循环中。我的意思是我已经有了这个循环:
const newDoctors={}for(let item in doctors){for(let I=0;I
可以将逻辑放在这里吗?根据您的代码,我必须像这样做2个循环:。它可以合并成一个吗?