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次輸入的機會猜温峭,
????????每次猜一次猛铅,都要將結果告訴玩家是小了字支,還是大了
????????如果在5次機會內猜中凤藏,輸出“聰明”,程序結束
????????如果5次機會用完?程序直接結束堕伪。
????????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.?根據雙色球搖獎規(guī)則,產生6個紅球1個藍球霍比;紅球范圍1?-?33幕袱,?藍球范圍1?-?16.?紅球不能有重復的產生。
????????思路:每次產生一個隨機球悠瞬,存入數(shù)組中们豌,下一次產生的隨機球,要和數(shù)組中的進行比較浅妆,如果有相等的望迎,
????????則重新產生一個號(循環(huán)變量要減1),反之繼續(xù)存入數(shù)組凌外;直到產生6個球辩尊;藍球單獨產生;最后輸出所有球康辑。
????????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]??返回出來的結果[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]??返回出來的結果[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]]
????????扁平化的結果為:[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、根據數(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ù)組的翻轉?非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);