js數(shù)組練習

1.用數(shù)組實現(xiàn)輸入10個成績,求總分,最高分,最低分

????????var?arr?=?new?Array(60,?70,?80,?90,?30,?88,?77,?35,?23,?100);

????????var?sum?=?0,max=0;min=0;

????????for?(var?i?=?0;?i?<?10;?i++)?{

????????????sum?+=?arr[i];

????????????arr.sort(function(a,b){

????????????????return?a-b

????????????})

????????????max=arr[9]

????????????min=arr[0]

????????}

????????console.log(sum,max,min)

????????var?arr?=?[86,?45,?72,?39,?44,?77,?98,?87,?67,?59]

????????var?max?=?0;

????????var?sum?=?0

????????var?min?=?100

????????for?(var?i?=?0;?i?<?arr.length;?i++)?{

????????????sum?=?sum?+?arr[i]//求和

????????????if?(arr[i]?>?max)?{

????????????????max?=?arr[i]

????????????}

????????????if?(arr[i]?<?min)?{

????????????????min?=?arr[i]

????????????}

????????}

????????console.log(sum,?max,?min);

????????2.用數(shù)組實現(xiàn)?序列:1,2,3,5,8,13...。找出第20個數(shù)是多少???得出前20個數(shù)之和是多少?

????????var?arr?=?[],?sum?=?0,?num?=?0

????????for?(var?i?=?0;?i?<?20;?i++)?{

????????????if?(i?<?2)?{

????????????????num?=?i?+?1

????????????}?else?{

????????????????num?=?arr[i?-?1]?+?arr[i?-?2]

????????????}

????????????arr.push(num)

????????????sum?+=?num

????????}

????????console.log(sum,?arr);

????????3.用Date實現(xiàn)?輸入2個日期?(年月日),計算兩個日期相差多少天?

????????function?inp()?{

????????????var?date1?=?prompt('請按照規(guī)定格式輸入,例如2020,10,20')

????????????var?date2?=?prompt('請按照規(guī)定格式輸入,例如2020,10,20')

????????????var?result?=?sub(date1,?date2)

????????????console.log(result);

????????}

????????function?sub(date1,?date2)?{

????????????date1?=?new?Date(date1)

????????????date2?=?new?Date(date2)

????????????return?Math.abs(date1?-?date2)?/?1000?/?60?/?60?/?24

????????}

????????4.輸入日期?(年月日)和連接符(可以是?/?或者?-?)返回?2019?/?10?/?11??或者?2019?-?10?-?11

????????function?format(s){

????????????var?year=prompt('請按照規(guī)定格式輸入')

????????????var?month=prompt('請按照規(guī)定格式輸入')

????????????var?date=prompt('請按照規(guī)定格式輸入')

????????????return?[year,month,date].join(s)

????????}

????????console.log(format('-'));

????????1.猜數(shù)字游戲,有一個0?-?100隨機數(shù)?玩家有5次輸入的機會猜,

????????每次猜一次,都要將結(jié)果告訴玩家是小了,還是大了

????????如果在5次機會內(nèi)猜中,輸出“聰明”,程序結(jié)束

????????如果5次機會用完?程序直接結(jié)束。

????????var?num?=?parseInt(Math.random()*101);

????????console.log(num)

????????for(var?i=0;i<5;i++){

????????????var?arr=prompt('請輸入一個數(shù):');

????????????if(arr==num){

????????????????console.log('你真是個小機靈鬼');

????????????????break;

????????????}else?if(arr>num){

????????????????alert('猜大了')

????????????}else{

????????????????alert('猜小了')

????????????}

????????}

????????2.有一個4個長度的數(shù)組,每個位置裝有0?-?9之間的隨機數(shù)字,有10次輸入的機會來猜每個位置的上的數(shù)是什么,

????????每次猜完4個數(shù)字以后都要給出提示,正確幾個?錯誤幾個,

????????只有位置和數(shù)字完全正確才算正確,其他情況全視為錯誤。

????????var?arr?=?new?Array(4)

????????for?(var?i?=?0;?i?<?arr.length;?i++)?{

????????????arr[i]?=?parseInt(Math.random()?*?10)

????????}

????????console.log(arr);

????????for?(var?i?=?0;?i?<?10;?i++)?{

????????????var?ans?=?new?Array(4)

????????????var?yesNum?=?0,?noNum?=?0

????????????for?(var?j?=?0;?j?<?arr.length;?j++)?{

????????????????ans[j]?=?prompt('第'?+?(i?+?1)?+?'次的第'?+?(j?+?1)?+?'個')

????????????????if?(ans[j]?==?arr[j])?{

????????????????????yesNum++

????????????????}?else?{

????????????????????noNum++

????????????????}

????????????}

????????????console.log(`正確${yesNum}個,錯誤${noNum}個`);

????????????if?(yesNum?==?4)?{

????????????????console.log('聰明');

????????????????break;

????????????}

????????}

????????3.?根據(jù)雙色球搖獎規(guī)則,產(chǎn)生6個紅球1個藍球;紅球范圍1?-?33,?藍球范圍1?-?16.?紅球不能有重復的產(chǎn)生。

????????思路:每次產(chǎn)生一個隨機球,存入數(shù)組中,下一次產(chǎn)生的隨機球,要和數(shù)組中的進行比較,如果有相等的,

????????則重新產(chǎn)生一個號(循環(huán)變量要減1),反之繼續(xù)存入數(shù)組;直到產(chǎn)生6個球;藍球單獨產(chǎn)生;最后輸出所有球。

????????var?red?=?[parseInt(Math.random()?*?33?+?1)]//先準備一個//20

????????//?第二個?要跟?第一個?來比較

????????for?(var?i?=?0;?red.length?<?6;?i++)?{//1?2?3

????????????console.log(`第${i?+?1}次`);

????????????var?num?=?parseInt(Math.random()?*?33?+?1)//21?20?20

????????????if?(red.indexOf(num)?==?-1)?{

????????????????red.push(num)//[20,21]

????????????}

????????}

????????console.log(red);

????????var?blue?=?parseInt(Math.random()?*?16?+?1)

????????console.log(blue);

????????1、數(shù)組去重[1,?2,?3,?4,?2,?1,?3,?5,?6,?9,?5]??返回出來的結(jié)果[1,?2,?3,?4,?5,?6,?9]

????????var?arr?=?[1,?2,?3,?4,?2,?1,?3,?5,?6,?9,?5];

????????function?show(arr)?{

????????????var?str?=?[]

????????????for?(var?i?=?0;?i?<?arr.length;?i++)?{

????????????????if?(str.indexOf(arr[i])?==?-1)?{

????????????????????str.push(arr[i])

????????????????}

????????????}

????????????return?str

????????}

????????console.log(show(arr));


????????var?arr?=?[1,?2,?3,?1,?2]

????????var?arr2?=?arr.sort()//[1,1,2,2,3]

????????var?res?=?[arr2[0]]

????????for?(var?i?=?1;?i?<?arr2.length;?i++)?{

????????????if?(arr2[i]?!=?res[res.length?-?1])?{

????????????????res.push(arr2[i])

????????????}

????????}

????????console.log(res);

????????2、數(shù)組排序[1,?2,?3,?4,?2,?1,?3,?5,?6,?9,?5]??返回出來的結(jié)果[1,?1,?2,?2,?3,?3,?4,?5,?5,?6,?9]

????????var?arr=[1,?2,?3,?4,?2,?1,?3,?5,?6,?9,?5];

????????for(var?i=0;i<arr.length;i++){

????????????arr.sort()??

????????}

????????console.log(arr);

????????var?arr?=?[3,?2,?1,?4,?2,?1]

????????var?temp?=?0,?count?=?0

????????for?(var?i?=?0;?i?<?arr.length?-?1;?i++)?{

????????????for?(var?j?=?0;?j?<?arr.length?-?1?-?i;?j++)?{

????????????????count++

????????????????console.log(arr,?count);

????????????????if?(arr[j]?>?arr[j?+?1])?{

????????????????????temp?=?arr[j]

????????????????????arr[j]?=?arr[j?+?1]

????????????????????arr[j?+?1]?=?temp

????????????????}

????????????}

????????}

????????console.log(arr);

????????3、排序后去重

????????var?arr?=?[1,?2,?3,?4,?2,?1,?3,?5,?6,?9,?5];

????????arr.sort(function(a,b){

????????????return?a-b

????????})

????????var?str?=?[]

????????for?(var?j?=?0;?j?<?arr.length;?j++)?{

????????????if?(str.indexOf(arr[j])?==?-1)?{

????????????????str.push(arr[j])

????????????}

????????}

????????console.log(str);

????????給定一個排序數(shù)組,你需要在?原地?刪除重復出現(xiàn)的元素,使得每個元素只出現(xiàn)一次,返回移除后數(shù)組的新長度。

????????不要使用額外的數(shù)組空間,你必須在?原地?修改輸入數(shù)組?并在使用?O(1)?額外空間的條件下完成。

????????var?arr?=?[1,?2,?3,?4,?2,?1,?3,?5,?6,?9,?5]

????????var?len?=?arr.length

????????for?(var?i?=?0;?i?<?len?-?1;?i++)?{

????????????var?j=i+1

????????????for?(;?j?<?len?-?1;?j++)?{

????????????????if?(arr[i]?==?arr[j])?{

????????????????????arr.splice(j,1)

????????????????}

????????????}

????????}

????????console.log(arr);

????????function?removeDuplicates(nums)?{

????????????for?(var?i?=?0;?i?<?nums.length;?i++)?{

????????????????if?(nums[i]?==?nums[i?+?1])?{

????????????????????nums.splice(i,?1)

????????????????????i--

????????????????}

????????????}

????????????return?nums

????????}

????????console.log(removeDuplicates([0,?0,?0,?1,?1,?2,?2,?3,?4]));

????????5、以數(shù)組的第二個字符排序

????????var?arr?=?['hello',?'gay',?'blob',?'fyi',?'circle',?'rooom',?'zzz']

????????function?compareSort()?{

????????????var?newArr?=?[]

????????????for?(var?i?=?0;?i?<?arr.length;?i++)?{

????????????????//{id:e,origin:hello}

????????????????//{id:a,origin:gay}

????????????????newArr.push({?id:?arr[i][1],?origin:?arr[i]?})

????????????}

????????????console.log(newArr);

????????????newArr.sort(function?(a,?b)?{

????????????????var?x?=?a.id//e

????????????????var?y?=?b.id//a

????????????????if?(x?>?y)?{

????????????????????return?1

????????????????}

????????????????if?(x?<?y)?{

????????????????????return?-1

????????????????}

????????????????return?0

????????????})

????????????console.log(newArr);

????????????var?result?=?[]

????????????for?(var?j?=?0;?j?<?newArr.length;?j++)?{

????????????????result.push(newArr[j].origin)

????????????}

????????????console.log(result);

????????}

????????compareSort()

????????1、給定A、B兩個數(shù)組,同時存在于A、B兩個數(shù)組中的項稱為“交集”;只在A數(shù)組中,

????????且不在B數(shù)組中的項稱為“差集”編寫函數(shù)intersection(arr1,?arr2)返回兩個數(shù)組的交集數(shù)組;

????????var?arr?=?[1,?2,?3,?4],?arr2?=?[3,?4,?5]?//3,4

????????function?intersection(arr1,?arr2)?{

????????????var?temp?=?[]

????????????for?(var?i?=?0;?i?<?arr2.length;?i++)?{

????????????????if?(arr1.indexOf(arr2[i])?!=?-1)?{

????????????????????temp.push(arr2[i])

????????????????}

????????????}

????????????return?temp

????????}

????????console.log(intersection(arr,?arr2));

????????var?arr?=?[1,?2,?3,?4],?arr2?=?[3,?4,?5]

????????var?intersection?=?arr.filter(function?(item)?{

????????????return?arr2.indexOf(item)?>?-1

????????})

????????console.log(intersection);

????????2、編寫函數(shù)difference(arr1,arr2)返回兩個數(shù)組的差集數(shù)組

????????var?arr?=?[1,?2,?3,?4],?arr2?=?[3,?4,?5]//1,2,5

????????var?differenceA?=?arr.filter(function?(item)?{

????????????return?arr2.indexOf(item)?==?-1

????????})

????????var?differenceB?=?arr2.filter(function?(item)?{

????????????return?arr.indexOf(item)?==?-1

????????})

????????console.log(differenceA.concat(differenceB));

????????3、編寫一個二維數(shù)組,存儲九九乘法表。

????????var?arr=[];

????????for(var?i=1;i<10;i++){

????????????var?str=[];

????????????for(var?j=1;j<=i;j++){

????????????????str.push(i+'*'+j+'='+i*j);

????????????}

????????????arr.push(str)

????????}

????????console.log(arr);

????????4、編寫函數(shù)flattenArray(arr)?,可以將數(shù)組扁平化。數(shù)組拉平

????????例如[1,?[2,?3],?[4,?5],?[6,?[7,?8],?9,?[[[10,?[[11,?12],?13],?14],?15,?16],?17],?18]]

????????扁平化的結(jié)果為:[1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18]

????????var?arr?=?[1,?[2,?3],?[4,?5],?[6,?[7,?8],?9,?[[[10,?[[11,?12],?13],?14],?15,?16],?17],?18]];

????????var?str?=?arr.toString();

????????var?arr2?=?str.split(',');

????????for?(var?i?=?0;?i?<?arr2.length;?i++)?{

????????????arr2[i]?=?parseInt(arr2[i]);

????????}

????????console.log(str);

????????console.log(arr2);

????????var?arr?=?[1,?2,?[3,?4,?[5]]]

????????????var?temp?=?[]

????????????function?flat(list)?{

????????????????for?(var?i?=?0;?i?<?list.length;?i++)?{

????????????????????if?(Array.isArray(list[i]))?{

????????????????????????flat(list[i])

????????????????????}?else?{

????????????????????????temp.push(list[i])

????????????????????}

????????????????}

????????????????return?temp

????????????}

????????????console.log(flat(arr));

????????5、編寫函數(shù)isAnagram(str1,?str2)用來檢查兩個字符串是否互為變位詞。變位詞指不計順序的情況下兩個單詞包含完全相同的字母,

????????不多不少。比如“silent”和“l(fā)isten”互為變位詞。

????????function?isAnagram(str1,?str2)?{//abc??abc

????????????var?arr1?=?str1.split('')

????????????var?arr2?=?str2.split('')

????????????if?(arr1.length?!=?arr2.length)?{

????????????????return

????????????}

????????????for?(var?i?=?0;?i?<?arr2.length;?i++)?{

????????????????if?(arr1.indexOf(arr2[i])?==?-1)?{

????????????????????return?false

????????????????}?else?{

????????????????????arr1.splice(arr1.indexOf(arr2[i]),?1)

????????????????}

????????????}

????????????return?arr1.length?==?0

????????}

????????console.log(isAnagram('abc',?'bcb'));

????????6、編寫函數(shù)macrepeat(arr)返回數(shù)組中連續(xù)出現(xiàn)最多次的項。

????????例如maxrepeat([1,?1,?2,?2,?2,?3,?3,?3,?3,?3,?3,?4])將返回3.

????????function?maxrepeat(arr)?{

????????????var?obj?=?{}

????????????for?(var?i?=?0;?i?<?arr.length;?i++)?{

????????????????var?char?=?arr.splice(i,?1).toString()//?拿到?數(shù)組的每一個值??并刪除第一位

????????????????//?console.log(char);

????????????????obj[char]?=?obj[char]?||?0//把數(shù)組出現(xiàn)過的值?當做對象的鍵?{1:0,2:1}

????????????????obj[char]++//?累加計數(shù)

????????????????i--//?從頭開始

????????????}

????????????console.log(obj);

????????????var?max?=?0

????????????for?(var?key?in?obj)?{

????????????????console.log(key);

????????????????if?(obj[key]?>?max)?{

????????????????????max?=?key

????????????????}

????????????}

????????????console.log(max);

????????}

????????maxrepeat([1,?1,?2,?3,?3,?3,?4,?5])

????????console.log(maxrepeat([1,?1,?2,?2,?2,?3,?3,?3,?3,?3,?3,?4]));

????????7、根據(jù)數(shù)組中每個對象的i屬性,由小到大排序如下數(shù)組。

????????var?arr?=?[{?i:?5,?v:?1?},?{?i:?2,?v:?4?},?{?i:?3,?v:?2?},?{?i:?1,?v:?5?},?{?i:?4,?v:?3?}];

????????var?arr?=?[{?i:?5,?v:?1?},?{?i:?2,?v:?4?},?{?i:?3,?v:?2?},?{?i:?1,?v:?5?},?{?i:?4,?v:?3?}];

????????function?compare(arr)?{

????????????return?function?(a,?b)?{

????????????????var?val1?=?a[arr];

????????????????var?val2?=?b[arr];

????????????????return?val1?-?val2;

????????????}

????????}

????????console.log(arr.sort(compare('i')))

????????var?arr?=?[{?i:?5,?v:?1?},?{?i:?2,?v:?4?},?{?i:?3,?v:?2?},?{?i:?1,?v:?5?},?{?i:?4,?v:?3?}];

????????arr.sort(function?(a,?b)?{

????????????return?a.i?-?b.i

????????})

????????console.log(arr);

????????9、利用原生JS實現(xiàn)?數(shù)組的翻轉(zhuǎn)?非reverse、

????????var?str?=?'hello'

????????var?arr?=?str.split('')

????????console.log(arr);

????????function?myreverse(arr)?{

????????????for?(var?i?=?0;?i?<?arr.length?/?2;?i++)?{

????????????????var?temp?=?arr[i]

????????????????arr[i]?=?arr[arr.length?-?i?-?1]//’dl‘

????????????????arr[arr.length?-?i?-?1]?=?temp

????????????}

????????????return?arr.join('')

????????}

????????console.log(myreverse(arr));

????????10.1?-?100任意取10個數(shù)?放入數(shù)組并排序

????????var?arr?=?[];

????????for?(var?i?=?0;?i?<?10;?i++)?{

????????????var?res?=?Math.floor(Math.random()?*?101?+?1);

????????????arr.push(res);

????????}

????????arr.sort(function?(a,?b)?{

????????????return?a-b;

????????});

????????console.log(arr);

????????11、請用js計算0?-?10000中0出現(xiàn)的次數(shù)

????????var?arr?=?[]

????????for?(var?i?=?0;?i?<=?10000;?i++)?{

????????????var?pos?=?i.toString().split('')//[1,2]??[1,3]

????????????pos.map(function?(item)?{//[1,0]

????????????????if?(item?==?0)?{

????????????????????arr.push(item)

????????????????}

????????????})

????????}

????????console.log(arr.length);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容