var arr=new Array(["A","B"],["C","D"],["E","F"],["A","C"],["D","F"],["E","A"],["A","F"]);
var output_arr=new Array();
//找出出现过三次及以上的元素,写入到output_arr这个一维数组中
//"A"出现了4次,"F"出现了3次
output_arr = ["A","F"];
var arr=new Array(["A","B"],["C","D"],["E","F"],["A","C"],["D","F"],["E","A"],["A","F"]);
var output_arr=new Array();
//找出出现过三次及以上的元素,写入到output_arr这个一维数组中
//"A"出现了4次,"F"出现了3次
output_arr = ["A","F"];
这里给出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
));
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
给你个参考- -
计算元素出现次数并筛选出符合条件的元素
查看结果