问题描述
我有以下 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",{
id: 10,technical_name: "FOM",short_name: "Fom",monetization_types: [ "sax" ],}]
使用 axios,如果项目的“monetization_types”具有“flatrate”,我会尝试获取所有“clear_name”。 然后 console.log 到屏幕上。
到目前为止,这是我的代码:
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();
但这行不通。知道我怎样才能做到这一点吗?我只想控制台记录清楚的名称。
解决方法
过滤和映射:
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",{ id: 10,technical_name: "FOM",short_name: "Fom",monetization_types: [ "sax" ],}];
const names = data
.filter(({monetization_types}) => monetization_types && Array.isArray(monetization_types) && monetization_types.includes("flatrate"))
.map(({clear_name}) => clear_name);
console.log(names)