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