function sortFun(prop , rev){
//根据prop属性排序,根据rev决定升序还是降序
if(rev === undefined){
rev =1
}else {
rev =(rev) ? 1 : -1
}
return function (a,b){
let val1 = a[prop]
let val2 = b[prop]
if(val1 < val2){
return rev * -1
}
if(val1 > val2){
return rev * 1
}
return 0
}
}
function clickFun() {
var gradeOne = {
classOne: ['语蕊', '杨文丽', '耿雨真', '能宏达', '介山槐'],
classTwo: ['暨嘉运', '白秋', '永黛娥', '廖俊风'],
classThree: ['苌晶滢', '夏菡', '慕容天青', '释鸿文', '隋乐咏', '衣月桂', '闫雨华']
}
var example =[]
//instanceof Array
for(var key in gradeOne){
var arr = gradeOne[key]
if( arr instanceof Array ){//判断这个属性的值是否为数组
example.push({"key": key, "len": arr.length})//放入到example中,方便后面排序
}
}
//调用sort方法进行排序
example.sort(sortFun('len', false))//false为降序
debugger
console.log(example[0].key)//降序排列,所以第一个就是最多的
}
① 利用数组的length属性来判断,length=0->这个数组就是空数组;
② 或者利用数组的各种方法和字符串方法,比如toString();
如果转成字符串是空字符串,则这个数组就是空数组;
③当然还有其他方法,比如直接打印出这个数组,看看结果是不是空的;
js判断某个给定值是否在数组中的方法:function isInArray(arr, val){var i, iLen if(!(arr instanceof Array) || arr.length === 0){return false }if(typeof Array.prototype.indexOf === 'function'){return !!~arr.indexOf(val)}for(i = 0, iLen = arr.lengthi <iLeni++){if(val === arr[i]){return true }}return false}isInArray([1,2,3,4,5],5)//trueisInArray([1,2,3,4,5],6)//falseisInArray([1,2,3,4,5],'5')//false
解释:
arr instanceof Array判断arr变量是否为数组,如果不是,则输入参数有误,返回false
arr.length === 0判断数组长度是否为0,如果是0,则无论给出哪个值,都不在数组中,返回false
typeof Array.prototype.indexOf === 'function'用来判断浏览器是否原生支持数组的indexOf方法,新版的浏览器都支持数组原生的indexOf,该函数用于获取给定值在数组中的位置信息,如果存在返回首次出现的位置下标,不存在返回-1
arr.indexOf(val)使用原生的方法判断val首次在arr中出现的下标,不存在返回-1
~为取反,只有在值为-1的时候,取反结果为0,其他情况都非零。
!!隐式转换,转为bool型,如果是0则转换后为false,否则为true
后面用循环判断数组每一个值与给定值是否完全相等(此处用===表示不仅数值相等,类型也要相等),如果相等返回true,否则循环结束后返回false