[js][填坑] 数组中各元素的数量、数量最多的元素
#遍历关联数组、对象,用 for in
function eleCount(arr) { // if (typeof arr == 'string') { // arr = arr.split(''); // }不需要 var temp = {}; var maxName; var maxCount = 0; for (var i = 0; i < arr.length; i++) { if (temp[arr[i]]) { temp[arr[i]] += 1; } else { temp[arr[i]] = 1; } } console.info(temp); for (var k in temp) { if (maxName) { if (maxCount < temp[k]) { maxName = k; maxCount = temp[k]; } } else { maxName = k; maxCount = temp[k]; } } console.warn(maxName, maxCount); } var arr1 = [4, 5, 4, 7, 8, 4, 2, 67, 5, 89, 5, 67]; var arr2 = ['a', 'b', 'd', 'e', 'f', 'h', 'g', 'k', 'a', 'b', 'e', 'd']; var arr3 = ['a', 'b', 'd', 'e', 'F', 'F', 'g', 'k', 'A', 'B', 'e', 'd']; var arr4 = 'sdfxcaweasdazkvda'; eleCount(arr1); eleCount(arr2); eleCount(arr3); eleCount(arr4); //只对数字数组有效,对关联数组无效 console.log(Math.max.apply(null, arr1)); //89 console.log(Math.max.apply(null, arr2)); //NaN console.log(Math.max.apply(null, arr3)); //NaN
#abandon
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <script> var a = [4, 5, 4, 7, 8, 4, 2, 67, 5, 89, 5, 67]; //var b = a.sort();//浅复制 var b = []; //深复制防止改变原数组 //深复制方法一 // b = a.map(function(e, i, arr) { // return e; // }) //深复制方法二 // a.forEach(function(e, i, arr) { // b[i] = e; // }); //深复制方法三 for (var i = 0; i < a.length; i++) { b[i] = a[i]; } b.sort(); var count = 1; var temp = []; var max = 1; var maxname; for (var i = 0; i < b.length; i++) { if (b[i] == b[i + 1]) { count++; } else { if (max < count) { max = count; maxname = b[i]; } console.log(b[i] + '的个数为:' + count); count = 1; } } console.log(a); console.log(b); console.log(maxname + '的个数最多,为:' + max); </script> </body> </html>