如何避免将重复项添加到数组中,并且特定属性一次只有一个值?

我有一些CalendarIcons看起来像链接中的图片。

http://img2.mukewang.com/628f388300017e1401850183.jpg

这些图标有这些 id:

  • autumn=2020-08-20

  • autumn=2020-08-22

  • spring=2020-04-20

  • spring=2020-04-21

我创建了一个数组来保存日期:const selectedDates = []在我的状态。当我选择一个日期时,我可以将id值推送到selectedDates数组中。当我选择一个图标时,我得到 id:autumn=2020-08-20并推送到我的selectedDates数组。但是,如果我单击具有此 ID 的另一个图标:autumn=2020-08-22它也被推送到数组中。但我只想要一个autumn值,并且只想要spring我的数组中的一个值。我该如何解决,所以我的数组只包含autumnor的一个值spring

这是我的 handleClicked 方法CalendarIcons

handleClicked(calendarIconId, rowLabelId) {


    // Should not add same value autumn, spring, etc. again, and only add one value specificed behind the =

    var dateArray = this.state.selectedDates.concat(calendarIconId);


    this.setState({

        calendarSelectedIconId: calendarIconId,

        rowTracker: rowLabelId,

        selectedDates: dateArray

    });

}

我希望问题很清楚,如果问题不清楚,请给我反馈。感谢您的帮助!


慕少森
浏览 117回答 2
2回答

Helenr

Set将自动使值唯一。你可以有类似的东西:// Declaration of the Setconst uniqueSet = new Set();function handleClicked(calendarIconId) {  // Add the new value inside of the Set  uniqueSet.add(calendarIconId);    // Turn the set into an array  const array = Array.from(uniqueSet);  console.log(array);}handleClicked('autumn=2020-08-20');handleClicked('autumn=2020-08-22');handleClicked('autumn=2020-08-22');handleClicked('autumn=2020-08-22');handleClicked('autumn=2020-08-22');handleClicked('autumn=2020-08-22');handleClicked('spring=2020-04-20');handleClicked('spring=2020-04-21');handleClicked('spring=2020-04-21');handleClicked('spring=2020-04-21');handleClicked('spring=2020-04-21');handleClicked('spring=2020-04-21');编辑:我们只想为每个季节保留一个值:// Declaration of an object. We are going to use the key/value systemconst library = {};function handleClicked(calendarIconId) {  // We "open" the value to extract the relevant informations  const [    key,    value,  ] = calendarIconId.split('=');  // Add the new value inside of the object  library[key] = value;    // Turn the object into an array, we gotta rebuild the values  const array = Object.keys(library).map(x => `${x}=${library[x]}`);  console.log(array);}handleClicked('autumn=2020-08-20');handleClicked('autumn=2020-08-22');handleClicked('autumn=2020-08-22');handleClicked('autumn=2020-08-22');handleClicked('autumn=2020-08-22');handleClicked('autumn=2020-08-22');handleClicked('spring=2020-04-20');handleClicked('spring=2020-04-21');handleClicked('spring=2020-04-21');handleClicked('spring=2020-04-21');handleClicked('spring=2020-04-21');handleClicked('spring=2020-04-21');

DIEA

你可以做if(!Array.includes(id)) {  Array.push(id)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript