84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
給你一個參考- -
let arr = new Array(["A", "B"], ["C", "D"], ["E", "F"], ["A", "C"], ["D", "F"], ["E", "A"], ["A", "F"]); let result = [],list = {},output_arr = [];
計算元素出現次數並篩選出符合條件的元素
for (let [val1, val2] of arr) { result.push(val1, val2); } for (let val of result) { list[val] ? list[val] += 1 : list[val] = 1; if (list[val] === 3) { //出现3次以上的元素 output_arr.push(val); //装进数组 } }
查看結果
console.log(output_arr);
這裡給出ES5的解法,ES5相容性會好一些。
實作的程式碼如下,裡面已經給出具體的註解:
var arr = new Array(["A","B"],["C","D"],["E","F"],["A","C"],["D","F"],["E","A"],["A","F"]); var output_arr = new Array(); // 处理函数 function filterWord(arr){ // 先定义一个对象 var tempObject = {}; // 两层for循环,获得数组的每个元素 var arrLength = arr.length; for(var i = 0; i < arrLength; i++){ var arrItemLength = arr[i].length; for(var j = 0; j < arrItemLength; j++){ // 获得数组的元素 var temp = arr[i][j]; // 判断是否已经存在于对象中 if(temp in tempObject){ // 如果存在,那么计数加一 tempObject[temp]++; }else{ // 如果不存在,就新创建,并且计数为1 tempObject[temp] = 1; } } } // 将计数大于等于3的加入数组 var resultArr = []; for(var item in tempObject){ if(tempObject[item] >= 3){ resultArr.push(item); } } return resultArr; } output_arr = filterWord(arr); console.log(output_arr);
輸出結果:
["A", "F"]
這裡給一點小建議,希望題主熟悉一下JavaScript中的對象,以及遍歷和處理對象的方法。 在本題中,題主可以測試一下輸出tempObject的結果,其結果如下:
{ A: 4 B: 1 C: 2 D: 2 E: 2 F: 3 }
給個ES6的解法:
let arr = new Array(["A","B"],["C","D"],["E","F"],["A","C"],["D","F"],["E","A"],["A","F"]); let conatiner = [].concat(...arr).sort(); let dictionary = [...new Set(conatiner)]; let retArr = dictionary.filter((val, idx) => ( (conatiner.lastIndexOf(val) - conatiner.indexOf(val) + 1) >= 3 ));
給你一個參考- -
計算元素出現次數並篩選出符合條件的元素
查看結果
這裡給出ES5的解法,ES5相容性會好一些。
實作的程式碼如下,裡面已經給出具體的註解:
輸出結果:
這裡給一點小建議,希望題主熟悉一下JavaScript中的對象,以及遍歷和處理對象的方法。
在本題中,題主可以測試一下輸出tempObject的結果,其結果如下:
給個ES6的解法: