Доступ к чему-то внутри объекта, когда вы не знаете ключ - программирование
Подтвердить что ты не робот

Доступ к чему-то внутри объекта, когда вы не знаете ключ

Я получаю следующий объект

{
  IuW1zvaSABwH4q: {
    label: 'Random Image of TypeScript not relavent to coworking',
    thumbId: 'd501-f-b601-c8b1-4bd995e',
    schemaType: 'xman-assets-image-set'
  }
}

Теперь я хочу получить доступ к значению thumbID внутри него, т.е. d501-f-b601-c8b1-4bd995e

Но мой корневой ключ кажется динамическим/случайным (IuW1zvaSABwH4q). Как я могу получить доступ к значению внутри него?

4b9b3361

Ответ 1

Вы можете получить значения из объекта, а затем получить доступ к нужному ключу.

let obj =  {
    IuW1zvaSABwH4q: 
      {
        label: 'Random Image of TypeScript not relavent to coworking', 
        thumbId: 'd501-f-b601-c8b1-4bd995e',
        schemaType: 'xman-assets-image-set' 
      } 
    }
    
let op = Object.values(obj)[0].thumbId

console.log(op)

Ответ 2

Вы можете использовать Array.map для его преобразования и Array.forEach чтобы получить его и распечатать в консоли.

const obj = {
    IuW1zvaSABwH4q: {
        label: 'Random Image of TypeScript not relavent to coworking',
        thumbId: 'd501-f-b601-c8b1-4bd995e',
        schemaType: 'xman-assets-image-set'
    },
    YuW1zvaSABwH7q: {
        label: 'Random Image of TypeScript not relavent to coworking',
        thumbId: 'as90-f-b601-c8b1-4bd9958', 
        schemaType: 'xman-assets-image-set'
    }
};
//for one object
console.log(Object.values(obj)[0].thumbId);
//multiple unknown keys
Object.values(obj).map(ele => ele.thumbId).forEach(th=> console.log(th));

Ответ 3

Предполагая, что есть только одно свойство, вы можете получить к нему доступ через первое свойство.

const obj = { IuW1zvaSABwH4q: 
      { label: 'Random Image of TypeScript not relavent to coworking', thumbId: 'd501-f-b601-c8b1-4bd995e', schemaType: 'xman-assets-image-set' 
       } 
    };
    
console.log(obj[Object.getOwnPropertyNames(obj)[0]].thumbId);

Ответ 4

Вы можете использовать for..in для итерации объекта, а затем проверить, имеет ли этот объект ключ по имени thumbId. Эта проверка гарантирует, что код не выдаст ошибку, если у объекта нет ключа thumbId

let obj = {
  IuW1zvaSABwH4q: {
    label: 'Random Image of TypeScript not relavent to coworking',
    thumbId: 'd501-f-b601-c8b1-4bd995e',
    schemaType: 'xman-assets-image-set'
  }
}


for (let keys in obj) {
  if (obj[keys].hasOwnProperty('thumbId')) {
    console.log(obj[keys].thumbId);
  }
}

Ответ 5

Пытаться

Object.entries(obj)[0][1].thumbId

const obj= {
  IuW1zvaSABwH4q: {
    label: 'Random Image of TypeScript not relavent to coworking',
    thumbId: 'd501-f-b601-c8b1-4bd995e',
    schemaType: 'xman-assets-image-set'
  }
}

//for(let o in obj) console.log(obj[o].thumbId);

let t=Object.entries(obj)[0][1].thumbId;

console.log(t);

Ответ 6

Используя подчеркивание

let yourObject = {
  IuW1zvaSABwH4q: {
    label: 'Random Image of TypeScript not relavent to coworking',
    thumbId: 'd501-f-b601-c8b1-4bd995e',
    schemaType: 'xman-assets-image-set'
  }
}

_.pluck(_.values(yourObject),'thumbId');
// ["d501-f-b601-c8b1-4bd995e"]

Вы также можете использовать _.first для безопасного доступа к первому элементу массива

Ответ 7

Альтернативный способ использования комбинации

JSON.stringify() и split()

const obj = {
  IuW1zvaSABwH4q: {
    label: 'Random Image of TypeScript not relavent to coworking',
    thumbId: 'd501-f-b601-c8b1-4bd995e',
    schemaType: 'xman-assets-image-set'
  }
}
let thumbId = JSON.stringify(obj).split('"thumbId":')[1].split('"')[1].split('"')[0]
console.log(thumbId)

Ответ 8

var json = {
  IuW1zvaSABwH4q: {
    label: 'Random Image of TypeScript not relavent to coworking',
    thumbId: 'd501-f-b601-c8b1-4bd995e',
    schemaType: 'xman-assets-image-set'
  },
    IuW2zvaSABwH4q: {
    label: 'Random Image of TypeScript not relavent to coworking',
    thumbId: 'd501-f-b601-c8b1-4bd995e',
    schemaType: 'xman-assets-image-set'
  },
    IuW3zvaSABwH4q: {
    label: 'Random Image of TypeScript not relavent to coworking',
    thumbId: 'd501-f-b601-c8b1-4bd995e',
    schemaType: 'xman-assets-image-set'
  }
}

for (var key in json) {
  if (json[key]) {
    for (var x in json[key]) {
      if (x === 'thumbId') console.log(json[key][x]);
    }
  }
}