Доступ к элементам в javascript

У меня есть такой массив:

 array = [{key: "6S", values: { 3: [{Id: "1234a"}, {Id: "1234b"}]}},

         {key: "7S", values: { 5: [{Id: "1534a"}], 4: [{Id:"1534a"}]}}]

Я хочу сопоставить «3», «5» и «4» (которые на самом деле являются ключами из другого списка внутри большого списка) из значений ... что-то вроде этого

array.map(function(d)
        {  return d.values."key";}));

Чтобы получить доступ к значениям 3, 5 и 4, я могу использовать цикл for. Однако есть ли способ получить доступ к значениям напрямую?

Object.keys() работает?

Jonathan Rys 10.05.2018 17:15
Object.keys(d.values)
epascarello 10.05.2018 17:15

что вы имеете в виду под Я хочу сопоставить "3", "5" и "4"? вы хотите для них отдельный массив / объект?

Muhammad Usman 10.05.2018 17:15

@GeorgeBailey, чтобы создать список с этими тремя элементами ... Я хочу использовать эти элементы как домен оси. Object.keys (d.values) возвращают только элементы из последнего объекта списка.

Catalin Vasilescu 10.05.2018 17:22

@CatalinVasilescu Каков именно ваш ожидаемый результат?

Eddie 10.05.2018 17:25

@epascarello Object.keys (d.values) работает хорошо, только массив содержит единственный список с объектами .. Например, в массиве сверху они Object.keys (d.values) вернут «5» и «4». .без 3

Catalin Vasilescu 10.05.2018 17:27

Да, но вы отображаете внешний массив .... так что вы просто выполняете concat ....

epascarello 10.05.2018 17:28

@Eddie ["3", "5", "4"]

Catalin Vasilescu 10.05.2018 17:28
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
8
56
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Object.keys() вернет массив ключей объекта. Затем вы можете использовать concat() для их объединения.

array = [{key: "6S", values: { 3: [{Id: "1234a"}, {Id: "1234b"}]}},
         {key: "7S", values: { 5: [{Id: "1534a"}], 4: [{Id:"1534a"}]}}];
var result = [].concat(...array.map(d => Object.keys(d.values)));
console.info(result);

lol, я просто набрал [].concat(...array.map(d => Object.keys(d.values))) на своей консоли, чтобы убедиться, что он работает, прежде чем публиковать ответ.

epascarello 10.05.2018 17:33

Object.keys дает вам массив, и в результате на карте вы получаете что-то вроде

[[3],[4,5]]

Вы можете сгладить возвращаемый массив до одного массива, например

array.join(',').split(',');

var array = [{
        key: "6S",
        values: {
            3: [{
                Id: "1234a"
            }, {
                Id: "1234b"
            }]
        }
    },

    {
        key: "7S",
        values: {
            5: [{
                Id: "1534a"
            }],
            4: [{
                Id: "1534a"
            }]
        }
    }
];

 var newArray = array.map(o=>  Object.keys(o.values))
 
 console.info(newArray.join(',').split(','))

Другие вопросы по теме