从数组中随机取x条不重复数据的JS代码

非常不多说,js数组去掉重复数据的代码如下所示:

工作中经常遇到有关数组的一些操作

这里介绍2中方式:
js代码如下

从数组中随机取x条不重复数据的JS代码

 这篇文章主要介绍了从数组中随机取x条不重复数据的JS代码,有需要的朋友可以参考一下

工作中经常遇到有关数组的一些操作 

 

  1. 从数据中随机取x条不重复的数据
    (PS:下面的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;

 }

 

 

 

2.从对象中随机取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]);

    })

};

 

 

  1. 去除数组的重复项

 

代码如下:

/*

去除数组的重复项

 */

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));

}

这篇文章主要介绍了从数组中随机取x条不重复数据的JS代码,有需要的朋友可以参考一下
工作中经…

工作中经常遇到有关数组的一些操作

var arr = [1,2,3,4,5,6,1,6,7,2];
var newArr = [];
for(var i =0;i<arr.length-1;i++){
   if(newArr.indexOf(arr[i]) == -1){
    newArr.push(arr[i]);
  }
}
  1. 从数据中随机取x条不重复的数据
    (PS:下面的S.each是KISSY.each方法,大家可以改为for循环)
     var   arr=[1,7,3,2,1,4,12,3,"3",3]
    function compare(arr) {
      var result = [], isfl;
      for (var i = 0; i < arr.length; i++) {
          isfl= false;
         for (var j = 0; j < result.length; j++) {
              if (arr[i] ===result[j]) {   
                  isfl = true;
                 break;
              }
         }
         if (!isfl) {
             result.push(arr[i]);
         }
    }
         return result;
 }
 var dw=[];
 dw=compare(arr);
 console.log(dw);
 function compare2(arr) {
    var result = [], hash = {},type="",item;
    for (var i = 0; i<arr.length; i++) {
         item = arr[i];
          type = typeof(item);
        if (!hash[item+type]) {
            result.push(item);
            hash[item+type] = true;
        }
    }
    return result;
}
var  dw2=compare2(arr);
console.log(dw2);
  1. 从数据中随机取x条不重复的数据
    (PS:下面的S.each是KISSY.each方法,大家可以改为for循环)

图片 1

复制代码 代码如下:

注意:因为存在类型不同所以要用===,而第二种方式中,hash()只比较值,不比较其类型,所以需要单独抽出其类型,一起比较。才能达到所需目的
效果如图显示:
图片 2

复制代码 代码如下:

下面再给大家分享高效率去掉js数组中重复项

/*
从数组arr中随机取x条不重复的数据
 */
 function myRand(arr,num){
    var newArr = [];
    rand(num);    //随机 x 个

 

/*
从数组arr中随机取x条不重复的数据
 */
 function myRand(arr,num){
    var newArr = [];
    rand(num);    //随机 x 个

Array类型并没有提供去重复的方法,如果要把数组的重复元素干掉,那得自己想办法:

    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;
 }

    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;
 }

function unique(arr) {
var result = [], isRepeated;
for (var i = 0, len = arr.length; i < len; i++) {
isRepeated = false;
for (var j = 0, len = result.length; j < len; j++) {
if (arr[i] == result[j]) { 
isRepeated = true;
break;
}
}
if (!isRepeated) {
result.push(arr[i]);
}
}
return result;
} 

2.从对象中随机取x条不重复的数据

2.从对象中随机取x条不重复的数据

总体思路是把数组元素逐个搬运到另一个数组,搬运的过程中检查这个元素是否有重复,如果有就直接丢掉。从嵌套循环就可以看出,这种方法效率极低。我们可以
用一个hashtable的结构记录已有的元素,这样就可以避免内层循环。恰好,在Javascript中实现hashtable是极为简单的,改进如
下:

复制代码 代码如下:

复制代码 代码如下:

function unique(arr) {
var result = [], hash = {};
for (var i = 0, elem; (elem = arr[i]) != null; i++) {
if (!hash[elem]) {
result.push(elem);
hash[elem] = true;
}
}
return result;
//http://www.cnblogs.com/sosoft/
}

/*
随机从对象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]);
    })
};

/*
随机从对象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]);
    })
};

以上所述是小编给大家介绍的JS数组去掉重复数据只保留一条的实现代码
,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

  1. 去除数组的重复项
  1. 去除数组的重复项

您可能感兴趣的文章:

  • 如何高效率去掉js数组中的重复项
  • JS实现合并两个数组并去除重复项只留一个的方法
  • JavaScript合并两个数组并去除重复项的方法
  • javascript数字数组去重复项的实现代码
  • js 巧妙去除数组中的重复项
  • javascript
    删除数组中重复项(uniq)
  • JS求多个数组的重复数据
  • JS生成不重复的随机数组的简单实例
  • JS两个数组比较,删除重复值的巧妙方法(推荐)
  • JavaScript中数组去除重复的三种方法
  • javascript中去除数组重复元素的实现方法【实例】
  • javascript删除数组重复元素的方法汇总
  • JS简单去除数组中重复项的方法

复制代码 代码如下:

复制代码 代码如下:

/*
去除数组的重复项
 */
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));
}

/*
去除数组的重复项
 */
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));
}

1.
从数据中随机取x条不重复的数据
(PS:下面的S.each是KISSY.each方法,大家可以改为for循环)
复制代码…

您可能感兴趣的文章:

  • 用js实现随机返回数组的一个元素
  • js数组中如何随机取出一个值
  • js获取数组任意个不重复的随机数组元素
  • js实现从数组里随机获取元素
  • JS
    在指定数组中随机取出N个不重复的数据
  • JavaScript数组随机排列实现随机洗牌功能
  • JS生成不重复随机数组的函数代码
  • js
    数组随机字符串(广告不重复)
  • JS随机洗牌算法之数组随机排序
  • Javascript从数组中随机取出不同元素的两种方法

相关文章