JavaScript随机获取数组值不重复Mathfloorrandompush

Posted 牧碼人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript随机获取数组值不重复Mathfloorrandompush相关的知识,希望对你有一定的参考价值。

文章目录


前言

targetArr:目标参数,即循环后需要返回的值。
originArr:匹配参数,即需要从此参数中随机获取某一项里面的某个值放到targetArr中。
两个参数都是数组类型。
key:匹配字段,需要根据此字段区分是否获取到的值为以获取过的值,所以需要此字段是唯一值,最好是字符串类型,但尽量不要是中文,也不能为特殊字符。

☺☺☺☺☺☺☺

Math是一个内置对象,它拥有一些数学常数属性和数学函数方法。Math不是一个函数对象。
floor函数总是返回小于等于一个给定数字的最大整数。也就是只保留整数部分,丢掉小数点和小数值。
注意:当值为负数时可能有些难理解,例如:-36.6得到的结果是-37,因为向下取整,所以-37小于-36
random函数返回一个浮点数,伪随机数在范围从0 到小于1,也就是说,从0(包括0)往上,但是不包括1(排除1),然后您可以缩放到所需的范围。实现将初始种子选择到随机数生成算法;它不能被用户选择或重置。

☺☺☺☺☺☺☺

push方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度。


1、代码

function timeDistance(targetArr = [], originArr = [], key = 'id') 
	key = String(key);
	
    let obj = ,
        newArr = [];

    for (let i = 0; i < targetArr.length;) 
        let targetItem = targetArr[i],
            originItem = originArr[Math.floor(Math.random() * originArr.length)];

        if (!obj[originItem[key]]) 
            targetItem.icon = targetItem.title + originItem.icon;

            newArr.push(targetItem);

            obj[originItem[key]] = originItem.icon;

            i++;
        
    

    return newArr;


let targetArr = [
            id: 1,
            title: 'a'
        ,
        
            id: 2,
            title: 'b'
        ,
        
            id: 3,
            title: 'c'
        ,
        
            id: 4,
            title: 'd'
        ,
        
            id: 5,
            title: 'e'
        ,
        
            id: 6,
            title: 'f'
        ,
        
            id: 7,
            title: 'g'
        
    ],
    originArr = [
            id: '1a',
            icon: 'a.png'
        ,
        
            id: '2b',
            icon: 'b.png'
        ,
        
            id: '3c',
            icon: 'c.png'
        ,
        
            id: '4d',
            icon: 'd.png'
        ,
        
            id: '5e',
            icon: 'e.png'
        ,
        
            id: '6f',
            icon: 'f.png'
        ,
        
            id: '7g',
            icon: 'g.png'
        ,
        
            id: '8h',
            icon: 'h.png'
        ,
        
            id: '9i',
            icon: 'i.png'
        
    ];

console.log(timeDistance(targetArr, originArr));
// […, …, …, …, …, …, …]

2、解析

定义一个函数名为timeDistance的函数,主要起到封装作用。首先在函数里面定义一个名为obj的对象和一个名为newArr的数组;第二步使用for循环目标数组,在for循环里面首先定义变量接收目标数组循环出来的项,接着定义随机获取源数组的项;再者通过对象中key的唯一性判断obj里面是否存在对应键名,如果不存在,则进行数据新增,并且把值存到objnewArr中;最后进行i++;如果存在则不需要做任何操作,此时for会继续循环,并且i不变。

以上是关于JavaScript随机获取数组值不重复Mathfloorrandompush的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript随机获取数组值,并且不重复Mathfloorrandompush

Javascript-地图和回调-返回值不受影响[重复]

JavaScript问题:一个有一百个随机数字的数组中(可能有重复数字),随机抽取十个,且这十个数字不重复。

使用javascript回显4随机数组元素[重复]

怎么用JavaScript生成一个数组,数组里有十个随机数。并且不重复。数字

试图理解 Mathf.Approximately [重复]