#javascript #arrays #json #object
#javascript #массивы #json #объект
Вопрос:
Я хочу получить ключ и значение из данных JSON, как показано ниже.
{
"data": {
"listCard": {
"cards": [
{
"id": "2",
"title": "벗꽃볼사람",
"content": "하이",
"createdAt": "2019-04-17T16:06:31.962772 00:00",
"creator": {
"id": "2",
"name": "운영자"
}
},
{
"id": "1",
"title": "벗꽃볼사람",
"content": "하이",
"createdAt": "2019-04-17T16:06:14.789277 00:00",
"creator": {
"id": "2",
"name": "운영자"
}
}
]
}
}
}
я использую console.log(data.listCard)
это показано ниже
{cards: Array(2), __typename: "ListCardResponse"}
cards: Array(2)
0: {id: "2", createdAt: "2019-04-17T16:06:31.962772 00:00", updatedAt: "2019-04-17T16:06:31.962820 00:00", title: "벗꽃볼사람", content: "하이", …}
1: {id: "1", createdAt: "2019-04-17T16:06:14.789277 00:00", updatedAt: "2019-04-17T16:06:14.789315 00:00", title: "벗꽃볼사람", content: "하이", …}
length: 2
__proto__: Array(0)
__typename: "ListCardResponse"
__proto__: Object
но я использую console.log(data.listCard.cards)
он показывает карты, а не определяет.
наконец, я хочу использовать data.listCard.cards.map. не могли бы вы мне помочь?
Комментарии:
1. Похоже, у вас есть объект JavaScript, а не JSON.
2. взяв предоставленную вами информацию и запустив ее в консоли javascript, она работает просто отлично.
var d = ...; console.log(d.data.listCard.cards);
Поэтому я думаю, что нам нужно больше информации. Не могли бы вы дать нам более подробную информацию о некоторых особенностях, связанных с кодом?3. Видишь jsfiddle.net/bham7k84 — с этим нет никаких проблем
console.log(data.listCard.cards)
. Вы уверены, что это те же самые данные, которые приводят к ошибке?4. «я хочу использовать data.listCard.cards.map» … cards — это массив и не имеет никакого свойства с именем «map». И ни один из объектов внутри него. Вы говорите о функции .map() ? Если да, конечно, мы могли бы помочь вам использовать его, но сначала вам придется объяснить, чего вы хотите достичь, используя его.
Ответ №1:
Во-первых, это не JSON — это обычный объект JavaScript. Во-вторых, использование object.data.listCard.cards
работает отлично:
const object = {
"data": {
"listCard": {
"cards": [{
"id": "2",
"title": "벗꽃볼사람",
"content": "하이",
"createdAt": "2019-04-17T16:06:31.962772 00:00",
"creator": {
"id": "2",
"name": "운영자"
}
},
{
"id": "1",
"title": "벗꽃볼사람",
"content": "하이",
"createdAt": "2019-04-17T16:06:14.789277 00:00",
"creator": {
"id": "2",
"name": "운영자"
}
}
]
}
}
};
console.log(object.data.listCard.cards);
.as-console-wrapper { max-height: 100% !important; top: auto; }
Ответ №2:
Поскольку вы хотели использовать .map()
. Мы перебираем d.data.listCard.cards
. Но вы можете рассмотреть возможность использования forEach
.
Документация: Карта
Получить доступ к объекту data.listCard.cards.map
или data['listCard']['cards']
. Используя обозначение в виде скобок или точек.
Документация: Средства доступа к свойствам
let d = {
"data": {
"listCard": {
"cards": [
{
"id": "2",
"title": "벗꽃볼사람",
"content": "하이",
"createdAt": "2019-04-17T16:06:31.962772 00:00",
"creator": {
"id": "2",
"name": "운영자"
}
},
{
"id": "1",
"title": "벗꽃볼사람",
"content": "하이",
"createdAt": "2019-04-17T16:06:14.789277 00:00",
"creator": {
"id": "2",
"name": "운영자"
}
}
]
}
}
}
// Map
// Or d['data']['listCard']['cards']
d.data.listCard.cards.map(v => {
console.log(v)
});
// forEach
// Or d.data['listCard']['cards']
d.data.listCard.cards.forEach(v => {
console.log(v)
});
Я использую map
, когда мне нужно вернуть новый массив или объект.
// Map Returns Array
let data = d.data.listCard.cards.map(v => v);
console.log(data);