如何将特定的json元素放入数组中,使它们不重复?

laawzig2  于 2023-02-10  发布在  其他
关注(0)|答案(2)|浏览(156)

我在javascript中遇到的问题是,我希望特定的元素(在本例中是location.name)被放入change / array中,这样它们就不会重复[Las“ółta Górka”,Park Wodziczki Pozna,Sala SP 5,Rzeszów]。
我的json API https://apidemo.outrainer.pl/firms/1/trainings?future=14&past=7

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
            };
        });
       renderTrainingsList(trainings);

});

const renderTrainingsList = (trainings) => {
    trainings.forEach(training => {
        createTrainingsItemElement(training)
    })
}

我尝试从json呈现整个数组,并仅将www.example.comlocation.name放入单独的数组中,同时它们不会重复

rpppsulh

rpppsulh1#

使用Set存储唯一的位置名称,然后筛选项目。

const filterItems = () => {
    const uniqueLocation = new Set();
    const trainings = data.filter(training => {
        let locationName = training.location.name;
        if(!uniqueLocation.has(locationName)) {
            uniqueLocation.add(locationName);
            return {
                name: training.name,
                startDate: training.startDate,
                endDate: training.endDate,
                location: locationName,
                type: training.location.type
            }
        }
    });
    return trainings;
}
q3qa4bjr

q3qa4bjr2#

将名称抛入数组中。然后在呈现它之前,检查名称是否已经在数组中。

const renderTrainingsList = (trainings) => {
  const trainingNames = [];
  trainings.forEach(training => {
    if (!trainingNames.includes(training.name)) {
      trainingNames.push(training.name);
      createTrainingsItemElement(training);
    }
  });
  console.log(trainingNames);
}

相关问题