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

Posted xinghong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了城市搜索历史问题(对象数组去重)相关的知识,希望对你有一定的参考价值。

一、问题

城市搜索历史问题(历史记录保存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);

 

以上是关于城市搜索历史问题(对象数组去重)的主要内容,如果未能解决你的问题,请参考以下文章

ES6 数组内对象去重

数组对象去重

JS中数组对象去重

怎么对数组中的对象去重

(去重)JS比较两个数组对象,取出不同的值

es 数组去重,数组里面的对象去重