#javascript #reactjs #multidimensional-array #ecmascript-6
#javascript #reactjs #многомерный массив #ecmascript-6
Вопрос:
Мои данные из API выглядят следующим образом,
[
{
"id": 1,
"appName": "string",
"defaultAction": "string",
"defaultMessage": "string",
"rules": [
{
"id": 1,
"version": "string",
"brand": "string",
"action": "string",
"message": "string"
},
{
"id": 2,
"version": "string",
"brand": "new brand",
"action": "string",
"message": "string"
}
]
}
]
Я попытался, как показано ниже, прочитать дочерний массив из родительского массива из состояния для привязки к таблице
const { posts } = this.state;
console.log(posts);
const rule_list = posts.map(rules => {
console.log(rules);
});
Но я вижу, что он по-прежнему возвращает полный массив, а не только дочерний элемент.Может кто-нибудь мне здесь помочь.
Комментарии:
1. Что
console.log(posts);
такое печать
Ответ №1:
Rules — это полный элемент с определенным индексом, вам необходимо получить доступ к свойству, к которому вы хотите получить доступ, т.е rules.rules
Или вы можете Destructuring_assignment
let data = [ { "id": 1, "appName": "string", "defaultAction": "string", "defaultMessage": "string", "rules": [ { "id": 1, "version": "string", "brand": "string", "action": "string", "message": "string" }, { "id": 2, "version": "string", "brand": "new brand", "action": "string", "message": "string" } ] } ]
const rule_list = data.map(({rules}) => {
console.log(rules);
});
Комментарии:
1. Привет, если у меня есть 2 родительских узла и дочерние узлы, то он возвращает все дочерние узлы обоих родительских узлов. Здесь чего-то не хватает? мой API выдает следующие результаты [ { «id»: 1, «rules»: [ { «id»: 1, }, { «id»: 2, } ] }, { » идентификатор»: 2, «правила»: [] } ]
Ответ №2:
Вам необходимо получить доступ rules
к свойству каждого элемента post, чтобы получить дочерний rules
массив, как показано ниже.
posts.map((post) => {
console.log(post.rules);
});
если вы хотите сформировать массив правил из всех записей, вы можете сделать это, как показано ниже:
const rule_list = posts.map((post) => {
let { rules } = post;
if(rules amp;amp; rules.length > 0) {
return rules;
}
});
console.log(rule_list);