JavaScript数组与对象随机抽取及去重实现方法
作者:函数茶馆时间:2026-10-27 20:22:22浏览:287
本文介绍了JavaScript中处理数组和对象的三种常见操作:从数组中随机抽取指定数量的不重复元素、从对象中随机获取指定数量的键值对,以及去除数组中的重复项。文章提供了基于KISSY库和原生JS的具体代码实现,包括递归随机选取逻辑和基于对象键名的去重方案,适用于前端开发中的数据筛选场景。
在实际开发工作中,经常需要对数组进行各种操作处理。
从数组中随机抽取不重复数据
第一种场景是从数据源中随机抽取x条不重复的数据(注:示例代码中使用了S.each,这是KISSY库的each方法,实际使用时可替换为标准的for循环)。
具体实现代码如下:
/*
/* 从数组arr中随机取x条不重复的数据 */
*/
function myRand(arr,num){
var newArr = [];
rand(num); //随机 x 个
function rand(k){
if(k==0){
return;
}
var index = Math.floor(Math.random() * arr.length);
var flag = true;
S.each(newArr,function(v){
if(v == arr[index]){
flag = false;
}
});
if(flag){
newArr.push(arr[index]);
k--;
}
rand(k);
}
return newArr;
}
从对象中随机抽取不重复数据
第二种场景是从对象中随机抽取x条不重复的数据。
具体实现代码如下:
/*
/* 随机从对象obj中取x条 */
*/
function myRand(){
var S = KISSY;
var obj={
'01':{name:'a'},
'02':{name:'b'},
'03':{name:'c'},
'04':{name:'d'},
'05':{name:'e'},
'06':{name:'f'},
'07':{name:'g'},
'08':{name:'h'},
'09':{name:'i'},
'10':{name:'g'}
};
var arr = [];
S.each(obj,function(v,k){
arr.push(k);
});
//随机取3个
var newArr = myRand(arr,3);
S.each(newArr,function(b){
console.log(obj[b]);
})
};
去除数组重复项
3. 去除数组的重复项
代码如下:
/*
去除数组的重复项
*/
function uniqArr(arr){
function toObject(a) {
var o = {};
for (var i=0, j=a.length; i<j; i=i+1) {
o[a[i]] = true;
}
return o;
};
function keys(o) {
var a=[], i;
for (i in o) {
if (o.hasOwnProperty(i)) { // 这里, YUI源码中是lang.hasOwnProperty(o, i)
a.push(i);
}
}
return a;
};
return keys(toObject(arr));
}作者最新文章
JS大数值转字符串出现科学计数法怎么办
2026-11-05 17:09:21
JS split切割后出现空字符串怎么过滤
2026-11-05 16:00:30
在 React 或 Vue 项目中封装使用 JS 节流防抖
2026-11-05 15:27:29
JavaScript中怎么将带小数的字符串转为整数?
2026-11-05 14:32:38
怎么用JavaScript策略模式重构电商促销计算逻辑?
2026-11-05 14:01:09
