摘要:準備面試,多看點題。來自雨夜帶刀需求描述從一組有序的數(shù)據(jù)中生成一組隨機并且不重復的數(shù),類似于簡單的抽獎程序的實現(xiàn)。
(準備面試,多看點題。來自雨夜帶刀"s Blog)
需求描述:從一組有序的數(shù)據(jù)中生成一組隨機并且不重復的數(shù),類似于簡單的抽獎程序的實現(xiàn)。
先來生成一個有序的數(shù)組:
var arr = [], length = 100, i = 0; for( ; i < length; i++ ){ arr.push( i ); }
從一個長度為 100 的有序數(shù)組中隨機拿出 10 個隨機的數(shù),并且不能有重復。
方法1:隨機抽取法var gRandomArr = function( arr, length ){ var newArr = [], i = 0, index; for( ; i < length; i++ ){ // 利用數(shù)組長度生成隨機索引值 index = parseInt( Math.random() * arr.length ); // 將隨機索引對應的數(shù)組元素添加到新的數(shù)組中 newArr.push( arr[index] ); // 刪除原數(shù)組中隨機生成的元素 arr.splice( index, 1 ); } return newArr; }; // 調(diào)用 gRandomArr( arr, 10 );
方法1主要是采用基于數(shù)組本身的長度去生成隨機的索引值,然后將索引值對應的數(shù)組元素添加到隨機數(shù)組中,由于不能有重復,在添加好后將刪除原數(shù)組的元素。
方法2:隨機打亂原數(shù)組的順序,然后再一次性返回var gRandomArr = function( arr, length ){ // 使用sort將原數(shù)組的順序打亂,讓有序變成無序 arr.sort(function(){ return Math.random() - 0.5; }); // 從原數(shù)組中一次性返回10個元素 return arr.slice( 0, length ); }; // 調(diào)用 gRandomArr( arr, 10 );
方法2采用的辦法是先打亂原數(shù)組的順序,但這里需要用到 sort 來對原數(shù)組進行排序,如果數(shù)組長度較大的話,sort 排序的性能損耗會更大,因為需要遍歷整個數(shù)組,而隨機抽取的話,不需要對整個數(shù)組進行遍歷,故其性能會更好。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/87688.html
摘要:來自雨夜帶刀需求描述從一組數(shù)組中找出一組按不同順序排列的字符串的數(shù)組元素。最后用編碼和作為對象的來保存編碼和一致的字符串。方法方法是將字符串轉(zhuǎn)換成數(shù)組后再對數(shù)組進行排序,和使用排序后會變成,將拍好序的字符串作為對象的來保存排序一致的字符串。 (準備面試,多看點題。來自雨夜帶刀s Blog ) 需求描述:從一組數(shù)組中找出一組按不同順序排列的字符串的數(shù)組元素。假如有這樣一個數(shù)組: [ ...
摘要:這是一道魔性面試題,難倒了無數(shù)英雄好漢上面代碼的執(zhí)行順序是這樣的從上到下第一個函數(shù)就是實現(xiàn)了一個簡單的加法運算第二個函數(shù)是一個生成器函數(shù),如果調(diào)用它會返回一個生成器這一行調(diào)用了生成器函數(shù),所以此刻就是一個生成器它的本質(zhì)還是迭代器然后執(zhí)行循環(huán) 這是一道魔性面試題,難倒了無數(shù)英雄好漢…… def add(n,i): return n+i def test(): for i...
摘要:先去空白,去掉空白之后取第一個字符,判斷正負符號,若是英文直接返回,若數(shù)字則不取?;匚臄?shù)題目描述判斷一個整數(shù)是否是回文數(shù)?;匚臄?shù)是指正序從左向右和倒序從右向左讀都是一樣的整數(shù)。 JS算法題之leetcode(1~10) 前言 一直以來,前端開發(fā)的知識儲備在數(shù)據(jù)結(jié)構(gòu)以及算法層面是有所暫缺的,可能歸根于我們的前端開發(fā)的業(yè)務性質(zhì),但是我認為任何的編程崗位都離不開數(shù)據(jù)結(jié)構(gòu)以及算法。因此,我作為...
閱讀 1419·2021-09-23 11:21
閱讀 3117·2019-08-30 14:14
閱讀 3200·2019-08-30 13:56
閱讀 4150·2019-08-30 11:20
閱讀 1959·2019-08-29 17:23
閱讀 2772·2019-08-29 16:14
閱讀 1704·2019-08-28 18:18
閱讀 1496·2019-08-26 12:14