#javascript #axios
Вопрос:
У меня есть следующий JSON:
[{
id: 8,
technical_name: "netflix",
short_name: "nfx",
clear_name: "Netflix",
priority: 10,
display_priority: 1,
monetization_types: [ "flatrate" ],
}, {
id: 9,
technical_name: "gas",
short_name: "gsx",
clear_name: "Gas",
priority: 10,
display_priority: 1,
monetization_types: [ "flatrate" ],
}, {
id: 10,
technical_name: "FOM",
short_name: "Fom",
clear_name: "Gas",
priority: 10,
display_priority: 1,
monetization_types: [ "sax" ],
}]
Используя axios, я пытаюсь получить все «clear_name», если у элемента есть «flatrate» в его «типах монетизации».
А потом утешить.запишите его на экран.
Пока что вот мой код:
async function makeGetRequest() {
let res = await axios.get("http://apis.makersla.com/content/providers/locale/it_IT");
let data = res.data;
jData = data.forEach((item) =>
item.monetization_types.includes("flatrate") ? item.clear_name : ""
);
console.log(jData);
}
makeGetRequest();
Но это не работает. Есть идеи, как я могу этого достичь? Я просто хочу, чтобы консоль регистрировала чистое имя.
Комментарии:
1.
.forEach()
ничего не возвращает. Вы хотите.reduce()
или.filter()
.map()
или создатьjData
массив и.push()
clear_name
при необходимости в него (предположение: вы не хотите, чтобы в результате была куча пустых строк)2. Так как же именно я могу это сделать? И спасибо вам за большие пальцы, ребята
Ответ №1:
Фильтр и карта:
const data = [{ id: 8, technical_name: "netflix", short_name: "nfx", clear_name: "Netflix", priority: 10, display_priority: 1, monetization_types: [ "flatrate" ], }, { id: 9, technical_name: "gas", short_name: "gsx", clear_name: "Gas", priority: 10, display_priority: 1, monetization_types: [ "flatrate" ], }, { id: 10, technical_name: "FOM", short_name: "Fom", clear_name: "Gas", priority: 10, display_priority: 1, monetization_types: [ "sax" ], }];
const names = data
.filter(({monetization_types}) => monetization_types amp;amp; Array.isArray(monetization_types) amp;amp; monetization_types.includes("flatrate"))
.map(({clear_name}) => clear_name);
console.log(names)
Комментарии:
1.
script.js:6 Uncaught (in promise) TypeError: Cannot read property 'includes' of null at script.js:6 at Array.filter (<anonymous>)
2. Не с объектом, который вы разместили в своем вопросе
3. Таким образом, либо вы не получаете массив во всех случаях, ЛИБО ваша реализация JS не поддерживает массив.включает