В основном у меня есть объект, который будет многомерным, и его свойства могут быть названы как угодно, и у него может быть много измерений.
В какой-то момент мне нужно будет добавить / соединить свойство внутри этого объекта из кода, который не будет знать его положение.
Итак, пример объекта:
let obj = {
response: {
locations: {
data: [
0: Object,
1: Object,
2: Object,
]
}
},
endpoint: null
}
Мне нужно соединить data.locations.data[1], единственная информация, которая у меня есть, - это приведенный ниже массив и индекс. Очевидно, я буду знать, что первым свойством будет response.
['locations','data']
index: 1
Редактировать:
Моя ошибка, свойство data имеет значение массива, а не объект!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете использовать Array#reduce() и передать obj.response в качестве начального значения, чтобы получить вложенный родительский элемент, который на основе показанного массива будет obj.response.locations.data.
Затем splice() индексированный элемент в этом родительском элементе или любые другие необходимые изменения.
const arr = ['locations','data'],
index= 1,
obj = {
response: {
locations: {
data: [{id:1},{id:2}, {id:3}]
}
},
endpoint: null
}
const targetArr = arr.reduce((a,c)=> (a[c]), obj.response);
targetArr.splice(index,1);
console.info(obj)Эй, это близко, но я должен упомянуть ключи в data, которые не устанавливаются вручную, это массив, а не объект. Виноват!
@MartynBall Итак, в вашем случае используйте метод splice: obj.response.locations.data.splice (index, 1); developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Разобрался, просто поменять удалять на targetObj.splice(data.index, 1);. И прочтите пост @Nico
если obj.response.locations.data является объектом, вы должны использовать delete obj.response.locations.data.1 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…