$('.sp1 a').attr('href', 'javascript:;') $('.sp2 a').attr('href', 'javascript:;') var Initials = '' //字母 var jobTitle = '' //职称 var team = '' //团队 getList() // 点击 "职称"、"字母"、"团队" $('.sp2').on('click', 'a', function () { $(this).parent('.sp2').prev('.sp1').children('a').removeClass('on') $(this).siblings('a').removeClass('on') $(this).addClass('on') if ($(this).parents('li').index() == 0) { Initials = $(this).children('i').text().toUpperCase() } else if ($(this).parents('li').index() == 1) { jobTitle = $(this).text() } else if ($(this).parents('li').index() == 2) { team = $(this).text() } curPage = 1 getList() }) // 点击 "全部" $('.sp1 a').click(function () { $(this).parent('.sp1').next('.sp2').find('a').removeClass('on') $(this).addClass('on') if ($(this).parents('li').index() == 0) { Initials = '' } else if ($(this).parents('li').index() == 1) { jobTitle = '' } else if ($(this).parents('li').index() == 2) { team = '' } curPage = 1 getList() }) function getList() { $.ajax({ // url: '北京科技大学能环学院_files/nhxyszdw.json', url: '/common/nhxyszdw.json', success: function (data) { var list = data.data; var newArr = [] var InitialsArr = [] jobTitleArr = [] teamArr = [] list.map(function (item, index, arr) { if (item.contentProperty['姓氏检索'].toUpperCase().slice(0, 1) == Initials) { InitialsArr.push(item) } }) list.map(function (item, index, arr) { if (item.contentProperty['职称'].trim() == jobTitle) { jobTitleArr.push(item) } }) list.map(function (item, index, arr) { if (item.contentProperty['系所'].trim() == team) { teamArr.push(item) } }) debugger; let arr2 = [] if (Initials != '') { if (jobTitle != '') { if (team != '') { arr2 = [InitialsArr, jobTitleArr, teamArr] newArr = qjj(arr2) } else { arr2 = [InitialsArr, jobTitleArr] newArr = qjj(arr2) } } else { if (team != '') { arr2 = [InitialsArr, teamArr] newArr = qjj(arr2) } else { arr2 = [InitialsArr] newArr = qjj(arr2) } } } else { if (jobTitle != '') { if (team != '') { arr2 = [jobTitleArr, teamArr] newArr = qjj(arr2) } else { arr2 = [jobTitleArr] newArr = qjj(arr2) } } else { if (team != '') { arr2 = [teamArr] newArr = qjj(arr2) } else { newArr = list } } } // 按姓名排序 let newArr2 = newArr.sort((a, b) => a.title.localeCompare(b.title, 'zh')); var html = '' $.each(newArr2, function (i, item) { html += '
  • ' + '' + '
    ' + '' + '
    ' + '
    ' + item.title + '
    ' + '

    ' + item.contentProperty['职称完整名'].trim() + '

    ' + '
    ' + '
  • ' }) $('.ser_b ul ').html(html) } }) } // 取多个数组交集 // 1、设置一个变量minArr,表示所有数据里最小长度的数组 // 后面通过这个最小长度数组的数据和其他的数据比较取交集的数据 function qjj(arr) { let minArr = [], defaultArr = []; arr.forEach(i => { minArr = i; if (i.length < minArr.length) { minArr = i; } }); minArr.forEach(i => { state = []; // 2、这里因为要知道arr每个数组里是否包含的minArr当前循环的值i, // 所有设置了一个状态的数组state=[], // arr里的数组j如果包含i就往state里面push一个true,否则push一个false arr.forEach(j => { if (j.includes(i)) { state.push(true); } else state.push(false); }); // 3、最后一步通过对state状态数组对比每一个值是不是都是true // 来判断是否把这个i存进defaultArr交集的数组里 const status = state.every(i => { return i === true; }); // 只有arr所有的数组都包含这个值才存进defaultArr里 status && !defaultArr.includes(i) && defaultArr.push(i); }); return defaultArr }