题目描述
输出一个数组中出现次数大于n的元素组成的数组
为所有数组对象添加一个findDuplicate(n)方法,用于返回该数组中出现频率>=n的元素列表
[1,2,3,4,1,2,2,2] => findDuplicate(2) => [1,2]
[1,2,3,4,1,2,2,2] => findDuplicate(5) => []
[1,2,3,4,1,2,2,2] => findDuplicate(-1) => [1,2,3,4]
输出一个数组中出现次数大于n的元素组成的数组
为所有数组对象添加一个findDuplicate(n)方法,用于返回该数组中出现频率>=n的元素列表
[1,2,3,4,1,2,2,2] => findDuplicate(2) => [1,2]
[1,2,3,4,1,2,2,2] => findDuplicate(5) => []
[1,2,3,4,1,2,2,2] => findDuplicate(-1) => [1,2,3,4]
const findDuplicate = function(arr){
return (n)=>{
if(isNaN(n))return [];
n = n < 1 ? 1 : n
let resulte = [],
obj = Object.create(null)
arr.forEach(item=>{
obj[ item ] = (obj[ item ] || 0) + 1
if(obj[ item ] == n){
resulte.push(item)
}
})
return resulte
}
}([1,2,3,4,1,2,2,2])
findDuplicate(2) // [1,2]
findDuplicate(5) // []
findDuplicate(-1) // [1,2,3,4]
if (!Array.prototype.findDuplicate) {
Object.defineProperty(Array.prototype, 'findDuplicate', {
value: function (n) {
if (this === void 0 || this === null) {
throw new TypeError('this is null or not defined');
};
var t = Object(this);
var len = t.length >>> 0;
var obj = {};
var result = [];
for(let i = 0; i < len; i++) {
obj[t[i]] = (obj[t[i]] || 0)+1;
if(obj[t[i]] == n) {
result.push(t[i]);
}
}
return result;
}
});
}
测试用例:
[1,2,3,4,1,2,2,2].findDuplicate(2) => [1,2]
[1,2,3,4,1,2,2,2].findDuplicate(5) => []
[1,2,3,4,1,2,2,2].findDuplicate(-1) => [1,2,3,4]
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.9k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
考你 es5 ,so 上类似问题一大把。