如何提取JSON中不重复的location.name至数组?
解决方法
你可以利用JavaScript的Set对象自动处理重复值,再将其转换为数组,就能得到不重复的location.name集合。以下是修改后的代码,整合了提取逻辑:
const API_URL = 'https://apidemo.outrainer.pl/firms/1/trainings?future=14&past=7'; let trainings = []; fetch(API_URL) .then((res) => res.json()) .then((trainingsData) => { trainings = trainingsData.map((training) => { return { name: training.name, startDate: training.startDate, endDate: training.endDate, location: training.location.name, type: training.location.type }; }); // 提取不重复的location.name数组 const uniqueLocations = [...new Set(trainings.map(item => item.location))]; console.log(uniqueLocations); // 输出符合要求的无重复地点数组 renderTrainingsList(trainings); }); const renderTrainingsList = (trainings) => { trainings.forEach(training => { createTrainingsItemElement(training) }) }
核心逻辑说明:
- 第一步:用
trainings.map(item => item.location)从处理后的数组中提取所有地点名称,得到包含重复项的数组。 - 第二步:将该数组传入
new Set(),Set会自动过滤掉重复元素,仅保留唯一值。 - 第三步:通过扩展运算符
[...Set]把Set对象转换回普通数组,得到目标格式的无重复地点数组。
如果想直接从原始接口数据中提取(跳过中间的trainings数组处理),可以把提取逻辑替换成:
const uniqueLocations = [...new Set(trainingsData.map(training => training.location.name))];
内容的提问来源于stack exchange,提问作者ystro21
相关产品推荐
相关产品推荐

