城市搜索历史问题(对象数组去重)

一、问题

城市搜索历史问题(历史记录保存localStorage)
- 用数组包裹城市对象(包含城市id和name),记录5条,不包含重复的城市,并且把最新的放置数组最前面
- 思路:判断是否有历史记录,即数组为空,空直接放入
- 非空,则判断最新城市对象是否已存在数组中,存在则数组去重并移到数组最前,不存在则直接unshift进数组
- 注意点:判断一个对象元素在数组中是否存在
- 对象数组去重

// eg: 城市搜索历史数组
var list = [
    {id: '0001', name: '北京'},
    {id: '0002', name: '上海'},
    {id: '0003', name: '深圳'},
    {id: '0004', name: '广州'}
];
// 最新城市搜索记录
var cityObj = {
    id: '0003',
    name: '深圳'
}

// 方法一:循环数组,用 cityObj 的 id 与 list 的每个元素的 id 比较,-> 相同和不相同
for(var i=0; i<list.length; i++) {
    if(cityObj.id == list[i].id) {    // 相同的全部删除
        list.splice(i, 1);    // 删除该元素
        i--;
    }
}
list.unshift(cityObj);    // 把最新城市搜索记录加入
let historyStr = '';
if(list.length > 5) {
    historyStr = JSON.stringify(list.slice(0, 5));
}else {
    historyStr = JSON.stringify(list);
}
console.log(list, historyStr);

猜你喜欢

转载自www.cnblogs.com/xinghong/p/11366837.html