JavaScript数组与对象随机抽取及去重实现方法

作者:函数茶馆

时间:2026-10-27

浏览:286

本文介绍了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));
}

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章