Для добавления нового поля в объект, включая вложенные объекты, можно воспользоваться рекурсивной функцией. Вот пример кода на JavaScript, который добавляет новое поле "newField" во все объекты, включая вложенные:
```javascript
const data = {
id: 1,
name: 'John',
age: 30,
address: {
city: 'New York',
street: 'Broadway'
}
};
function addField(obj, field, value) {
obj[field] = value;
for (let key in obj) {
if (typeof obj[key] === 'object' && obj[key] !== null) {
addField(obj[key], field, value);
}
}
}
addField(data, 'newField', 'newValue');
console.log(data);
```
Чтобы добавить к каждому объекту массива поле "disabled", зависящее от значения "device_type_id", можно пройтись по всем объектам массива с помощью рекурсии и добавить соответствующее значение поля "disabled". Ниже приведен пример кода на JavaScript:
```javascript
const array = [{
id: 1,
name: 'device 1',
device_type_id: 1,
children: [{
id: 2,
name: 'device 2',
device_type_id: 2,
children: [{
id: 3,
name: 'device 3',
device_type_id: 1
}]
}]
}];
function addDisabledField(arr) {
arr.forEach(obj => {
obj.disabled = obj.device_type_id === 1; // пример условия, можно задать любую логику
if (obj.children) {
addDisabledField(obj.children);
}
});
}
addDisabledField(array);
console.log(array);
```
Этот код добавит к каждому объекту массива поле "disabled", которое будет зависеть от значения "device_type_id". Если "device_type_id" равен 1, то поле "disabled" будет равно true, в противном случае - false. Для другой логики условия нужно изменить выражение `obj.disabled = obj.device_type_id === 1;`.