日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript 编程题

發(fā)布時(shí)間:2023/12/14 javascript 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript 编程题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

刷題

1. 查找數(shù)組中元素的位置并返回下標(biāo)

String 對象方法 indexOf()

indexOf() 方法可返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置。

如果沒有找到匹配的字符串則返回 -1。

注意: indexOf() 方法區(qū)分大小寫。

2.數(shù)組求和

3.移除數(shù)組中的元素,不直接改原數(shù)組,返回新數(shù)組

function remove(arr, item) {var a = [];for(var i=0;i<arr.length;i++){if(arr[i] != item){a.push(arr[i]);}}return a; }

4.移除數(shù)組中的元素,直接在原數(shù)組上操作。數(shù)組splice()方法。

splice() 方法用于添加或刪除數(shù)組中的元素。

注意:這種方法會改變原始數(shù)組。

function removeWithoutCopy(arr, item) {for(var i=0;i<arr.length;i++){if(arr[i] == item){arr.splice(i,1)i--}}return arr; }

arr[i]==item,就將i作為第一個(gè)參數(shù),1作為第二個(gè)參數(shù)(只刪除一個(gè)元素)傳給splice方法。需要注意的是,splice方***改變數(shù)組的長度,因此在每次刪除之后,都需要執(zhí)行i–以確保數(shù)組長度正確。

如果僅刪除一個(gè)元素,則返回一個(gè)元素的數(shù)組。 如果未刪除任何元素,則返回空數(shù)組。
5.給數(shù)組添加元素,不改變原數(shù)組,返回新數(shù)組。數(shù)組concat()方法

定義和用法

concat() 方法用于連接兩個(gè)或多個(gè)數(shù)組。

該方法不會改變現(xiàn)有的數(shù)組,而僅僅會返回被連接數(shù)組的一個(gè)副本。

方法二 拷貝 push()

定義和用法

push() 方法可向數(shù)組的末尾添加一個(gè)或多個(gè)元素,并返回新的長度。

注意: 新元素將添加在數(shù)組的末尾。

注意: 此方法改變數(shù)組的長度

function append(arr, item) {//普通的迭代拷貝var length = arr.length;var newArr = [];//定義新的數(shù)組for(var i=0; i<arr.length;i++){ //遍歷原數(shù)組,newArr.push(arr[i]);//用push把原數(shù)組拷貝到新數(shù)組中}newArr.push(item);//再把新填的item拷貝進(jìn)來return newArr;//返回這個(gè)新的數(shù)組 };

方法三 slice()+push() 淺拷貝

定義和用法

slice() 方法可從已有的數(shù)組中返回選定的元素。

slice()方法可提取字符串的某個(gè)部分,并以新的字符串返回被提取的部分。

注意: slice() 方法不會改變原始數(shù)組。

function append(arr, item) {var newArr =arr.slice(0);//slice(start,end)淺拷貝數(shù)組newArr.push(item);return newArr; };

題目要求不改變原數(shù)組,可以使用arr.slice(0)復(fù)制一個(gè)數(shù)組賦值給newArr。給數(shù)組添加元素可使用push方法。

6 刪除數(shù)組的元素,返回新數(shù)組,slice()拷貝

function truncate(arr) {var newArr = arr.slice(0,arr.length-1);//用slice()拷貝原數(shù)組的第零個(gè)到倒數(shù)第二個(gè)元素賦值給newArrreturn newArr; }

如果是負(fù)數(shù),那么它規(guī)定從數(shù)組尾部開始算起的位置。如果該參數(shù)為負(fù)數(shù),則表示從原數(shù)組中的倒數(shù)第幾個(gè)元素開始提取,slice(-2) 表示提取原數(shù)組中的倒數(shù)第二個(gè)元素到最后一個(gè)元素(包含最后一個(gè)元素)。
slice(-2,-1) 表示抽取了原數(shù)組中的倒數(shù)第二個(gè)元素到最后一個(gè)元素(不包含最后一個(gè)元素,也就是只有倒數(shù)第二個(gè)元素)

方法二 slice()+pop()

定義和用法

pop() 方法用于刪除數(shù)組的最后一個(gè)元素并返回刪除的元素。

注意:此方法改變數(shù)組的長度!

提示: 移除數(shù)組第一個(gè)元素,請使用 shift() 方法。

function truncate(arr) {var newArr = arr.slice(0);//用slice()拷貝原數(shù)組newArr.pop();//使用pop方法可以刪除數(shù)組的最后一個(gè)元素return newArr; }

實(shí)例

const sites = ['Google', 'Runoob', 'Taobao', 'Zhihu', 'Baidu'];console.log(sites.pop()); // 輸出結(jié)果為: "Baidu"console.log(sites); // 輸出結(jié)果為: ['Google', 'Runoob', 'Taobao', 'Zhihu']sites.pop();console.log(sites); // 輸出結(jié)果為: ["Google", "Runoob", "Taobao"]

7.頭部添加元素 slice()+unshift()

unshift() 方法可向數(shù)組的開頭添加一個(gè)或更多元素,并返回新的長度。

注意: 該方法將改變數(shù)組的數(shù)目。

function prepend(arr, item) {var newArr = arr.slice(0);//slice()拷貝原數(shù)組newArr.unshift(item);return newArr; }

方法二 concat()連接兩個(gè)數(shù)組

合并兩個(gè)數(shù)組

該示例使用 apply() 添加第二個(gè)數(shù)組的所有元素。

注意當(dāng)?shù)诙€(gè)數(shù)組(如示例中的moreVegs)太大時(shí)不要使用這個(gè)方法來合并數(shù)組,因?yàn)槭聦?shí)上一個(gè)函數(shù)能夠接受的參數(shù)個(gè)數(shù)是有限制的。具體可以參考 apply()

var vegetables = ['parsnip', 'potato']; var moreVegs = ['celery', 'beetroot'];// 將第二個(gè)數(shù)組融合進(jìn)第一個(gè)數(shù)組 // 相當(dāng)于 vegetables.push('celery', 'beetroot'); Array.prototype.push.apply(vegetables, moreVegs);console.log(vegetables); // ['parsnip', 'potato', 'celery', 'beetroot']

方法三 [].push.apply()合并兩個(gè)數(shù)組推進(jìn)原數(shù)組


方法三 slice()+unshift()

方法四 join()+split()

定義和用法

join() 方法用于把數(shù)組中的所有元素轉(zhuǎn)換一個(gè)字符串。

元素是通過指定的分隔符進(jìn)行分隔的。

array.join(separator)

separator可選。指定要使用的分隔符。如果省略該參數(shù),則使用逗號作為分隔符。

定義和用法

split() 方法用于把一個(gè)字符串分割成字符串?dāng)?shù)組。

提示: 如果把空字符串 ("") 用作 separator,那么 stringObject 中的每個(gè)字符之間都會被分割。

注意: split() 方法不改變原始字符串。

string.split(separator,limit)







8刪除數(shù)組第一個(gè)元素,返回新數(shù)組shift()

定義和用法

shift() 方法用于把數(shù)組的第一個(gè)元素從其中刪除,并返回第一個(gè)元素的值。

注意: 此方法改變數(shù)組的長度!

方法二 spilce()

9.合并數(shù)組,返回新數(shù)組 concat

方法二 [].push.apply()

方法三:
10.指定位置添加元素,返回新數(shù)組

var j=0;用來計(jì)數(shù);
遍歷數(shù)組,
判斷
相等 j+1;
返回j

11.統(tǒng)計(jì)數(shù)組中等于item元素出現(xiàn)的次數(shù)


方法二 map()

定義和用法

map() 方法返回一個(gè)新數(shù)組,數(shù)組中的元素為原始數(shù)組元素調(diào)用函數(shù)處理后的值。

map() 方法按照原始數(shù)組元素順序依次處理元素。

注意: map() 不會對空數(shù)組進(jìn)行檢測。

注意: map() 不會改變原始數(shù)組。

12.找出重復(fù)出現(xiàn)的元素

function duplicates(arr) {//最簡單的思想,遍歷查看有無重復(fù),有的話壓棧,在壓棧前,判斷是否已經(jīng)存在即可var array =[]for(var i=0;i<arr.length-1;i++){for(var j=i+1;j<arr.length;j++){if(arr[i] == arr[j]&& array.indexOf(arr[j])===-1){array.push(arr[j])break}}}return array }


13.給數(shù)組中的每個(gè)元素求二次方,返回新數(shù)組

14查找元素出現(xiàn)的所有位置

15.
16

17
18.parseInt()函數(shù)

定義和用法

parseInt() 函數(shù)可解析一個(gè)字符串,并返回一個(gè)整數(shù)。

當(dāng)參數(shù) radix 的值為 0,或沒有設(shè)置該參數(shù)時(shí),parseInt() 會根據(jù) string 來判斷數(shù)字的基數(shù)。

當(dāng)忽略參數(shù) radix , JavaScript 默認(rèn)數(shù)字的基數(shù)如下:

如果 string 以 “0x” 開頭,parseInt() 會把 string 的其余部分解析為十六進(jìn)制的整數(shù)。

如果 string 以 0 開頭,那么 ECMAScript v3 允許 parseInt() 的一個(gè)實(shí)現(xiàn)把其后的字符解析為八進(jìn)制或十六進(jìn)制的數(shù)字。

如果 string 以 1 ~ 9 的數(shù)字開頭,parseInt() 將把它解析為十進(jìn)制的整數(shù)。


答案

19.

20.

function count(start, end) {//第一個(gè)數(shù)立即輸出console.log(start++);//setInterval(code,millisec,lang)//參數(shù)1:必需。要調(diào)用的函數(shù)或要執(zhí)行的代碼串//參數(shù)2:必須。周期性執(zhí)行或調(diào)用 code 之間的時(shí)間間隔,以毫秒計(jì)//參數(shù)3:可選。var time =setInterval(function(){if(start <= end){console.log(start++);}else{clearInterval(time);} },100);return{cancel:function(){clearInterval(time);}} } //注:setInterval() :按照指定的周期(以毫秒計(jì))來調(diào)用函數(shù)或計(jì)算表達(dá)式。 //方***不停地調(diào)用函數(shù),直到 clearInterval() 被調(diào)用或窗口被關(guān)閉。 //setTimeout() :在指定的毫秒數(shù)后調(diào)用函數(shù)或計(jì)算表達(dá)式,寫法和setInterval()一樣

21.

方法二

22.

23.將函數(shù)fn的執(zhí)行上下文改為obj對象(this指向obj)

function speak(fn, obj) {//在JavaScript中,函數(shù)是一種對象,其上下文是可以變化的,//對應(yīng)的,函數(shù)內(nèi)的this也是可以變化的,函數(shù)可以作為一個(gè)//對象的方法,也可以同時(shí)作為另一個(gè)對象的方法,可以通過//Function對象中的call或者apply方法來修改函數(shù)的上下文,//函數(shù)中的this指針將被替換為call或者apply的第一個(gè)參數(shù)。//將函數(shù) fn 的執(zhí)行上下文改為 obj 對象,//只需要將obj作為call或者apply的第一個(gè)參數(shù)傳入即可。return fn.apply(obj) }//方法二 function speak(fn, obj) {return fn.call(obj) }

24.

function functionFunction(str) {var f = function(str2){return str+', '+str2;}return f }

25.函數(shù)二次封裝
26.
27.

28.

//arguments不能用slice方法直接截取,需要先轉(zhuǎn)換為數(shù)組, //var args =Array.prototype.slice.call(arguments); //合并參數(shù)可以使用concat方法, //并且也需要將arguments先轉(zhuǎn)換為數(shù)組才能使用concat進(jìn)行合并。 //最后用使用apply執(zhí)行傳入的函數(shù)即可。 function partialUsingArguments(fn) {//先獲取函數(shù)第一個(gè)參數(shù)之后的全部參數(shù)var args = Array.prototype.slice.call(arguments,1);//聲明result函數(shù)var result = function(){//使用concat合并兩個(gè)或多個(gè)數(shù)組中的元素,//args.concat([].slice.call(arguments))將參數(shù)轉(zhuǎn)化為數(shù)組,然后合并return fn.apply(null,args.concat([].slice.call(arguments)));}return result; }

29.

30.

31.轉(zhuǎn)二進(jìn)制 var string = num.toString(2);

//方法一: function valueAtBit(num, bit) {//通過num.toString(2)能直接將num轉(zhuǎn)換為2進(jìn)制數(shù)格式的字符串var string = num.toString(2);var bitString = string[string.length-bit];//,利用下標(biāo)就能將對應(yīng)值取出來。//題目返回的數(shù)字是從右往左,因此下標(biāo)為倒數(shù)。return bitString; }//方法二: function valueAtBit(num,bit) {//toString轉(zhuǎn)化為二進(jìn)制,split將二進(jìn)制轉(zhuǎn)化為數(shù)組,reverse()將數(shù)組顛倒順序var arr = num.toString(2).split("").reverse();return arr[bit-1]; }

33.轉(zhuǎn)十進(jìn)制****parseInt()

parseInt() 函數(shù)可解析一個(gè)字符串,并返回一個(gè)整數(shù)。

radix為由幾進(jìn)制解析成十進(jìn)制;2,8,16

function base10(str) {//parseInt方法可以將其它進(jìn)制轉(zhuǎn)換為十進(jìn)制,//只需要給該方法傳入需要轉(zhuǎn)換的字符串和該字符串的進(jìn)制表示兩個(gè)參數(shù)即可。return parseInt(str,2); }//parseInt() //其他進(jìn)制轉(zhuǎn)十進(jìn)制 //parseInt(str,2); //parseInt(str,8); //parseInt(str,16)

34.

//方法一: function convertToBinary(num) {var string = num.toString(2);//轉(zhuǎn)成二進(jìn)制if(string.length<8){string = '0'+ string; }return string; }//方法二: function converToBinary(num) {var string = num.toString(2);//獲得二進(jìn)制位數(shù)var length1= string.length;if(length1<8){//聲明一個(gè)字符串用于補(bǔ)滿0var s1 ="00000000"var s2 = s1.slice(0,8-length1)string= s2+string;}return string; }

35.parseFloat()返回浮點(diǎn)數(shù)數(shù)字字符串+toFixed()四舍五入

數(shù)字轉(zhuǎn)換為字符串:var strA=""+a; console.log(strA);

parseFloat() 函數(shù)可解析一個(gè)字符串,并返回一個(gè)浮點(diǎn)數(shù)。

該函數(shù)指定字符串中的首個(gè)字符是否是數(shù)字。如果是,則對字符串進(jìn)行解析,直到到達(dá)數(shù)字的末端為

止,然后以數(shù)字返回該數(shù)字,而不是作為字符串。

定義和用法

toFixed() 方法可把 Number 四舍五入為指定小數(shù)位數(shù)的數(shù)字。

function multiply(a, b) {// 先將數(shù)字轉(zhuǎn)換為字符串var strA=""+a; console.log(strA);var strB=""+b; console.log(strB);// 先獲取兩個(gè)數(shù)的小數(shù)位數(shù)var lenA=(strA.indexOf(".")==-1)?0:(strA.length-strA.indexOf(".")-1);var lenB=(strB.indexOf(".")==-1)?0:(strB.length-strB.indexOf(".")-1);// 比較兩數(shù)的精度,精度大的作為結(jié)果數(shù)精度len=Math.max(lenA,lenB); console.log("lenA "+lenA+"\t"+"lenB "+lenB+"\n");// 計(jì)算運(yùn)算結(jié)果var result=null;result=parseFloat(a*b).toFixed(len); console.log("float "+result+"\n");return result; }

35.改變上下文

36.

function alterObjects(constructor, greeting) {return constructor.prototype.greeting = greeting; }//這是原型鏈問題。訪問一個(gè)對象的方法或者是屬性,首先會在該對象中尋找, //如果找到則返回,如果沒找到,則在其原型鏈上面向上尋找,直至基原型,如還未找到,則返回undefined。 //將constructor 的所有實(shí)例的 greeting 屬性指向給定的 greeting //變量,只需要在constructor的原型上面添加greeting屬性,并指定值。

37.for /in語句+hasOwnProperty

for/in 語句用于循環(huán)對象屬性。

循環(huán)中的代碼每執(zhí)行一次,就會對數(shù)組的元素或者對象的屬性進(jìn)行一次操作

js屬性對象的hasOwnProperty方法

Object的hasOwnProperty()方法返回一個(gè)布爾值,判斷對象是否包含特定的自身(非繼承)屬性

function iterate(obj) {var arr =[];for(var key in obj){ 使用for-in遍歷對象屬性if(obj.hasOwnProperty(key)){ 判斷key是否為對象本身的屬性arr.push(key+": "+obj[key]); 將屬性和值按格式存入數(shù)組}}return arr; }

38

function containsNumber(str) {for(var i=0;i<str.length;i++){if(Number(str[i]))return true}return false }//方法二 //判斷字符串中是否含有數(shù)字,可以用正則表達(dá)式。/\d/可以匹配 //字符串中的數(shù)字字符,用test方法可以檢測。 function containsNumber(str){var b=/\d/;return b.test(str); }

39 正則

function containsRepeatingLetter(str) {return /(a-zA-Z)\1/.test(str); } //在正則表達(dá)式中,利用()進(jìn)行分組,使用斜杠加 //數(shù)字表示引用,\1就是引用第一個(gè)分組,\2就是引用第二個(gè)分組。 //將[a-zA-Z]做為一個(gè)分組,然后引用,就可以判斷是否有連續(xù)重復(fù)的字母。

40

function endsWithVowel(str) {return /[a,e,i,o,u]$/i.test(str);//$表示匹配結(jié)尾,/i表示忽略大小寫 } //首先確定元音集合[a,e,i,o,u],然后是以元音結(jié)尾,加上$, //最后通配大小寫,加上i。因此正則表達(dá)式為:/[a,e,i,o,u]$/i, //最后用test方法去檢測字符串str

41

function captureThreeNumbers(str) {var arr = str.match(/\d{3}/);if(arr){return arr[0];}return false; } //題目描述有問題,實(shí)際考察的是字符串中是否含有連續(xù)的三個(gè)任意數(shù)字, //而不是三個(gè)連續(xù)的數(shù)字。 //依題,若存在連續(xù)的三個(gè)任意數(shù)字,則返回最早出現(xiàn)的三個(gè)數(shù)字,若不存在,則返回false。 //因此需要用到match方法,match()返回的是正則表達(dá)式匹配的字符串?dāng)?shù)組, //連續(xù)的三個(gè)任意數(shù)字用正則表達(dá)式表示為/\d{3}/。

42

function matchesPattern(str) {return /^(\d{3}-){2}\d{4}$/.test(str); } //本題需要注意格式,開頭^和結(jié)尾$必須加上來限定字符串, //3個(gè)數(shù)可表示為\d{3}, //4個(gè)數(shù)則為\d{4}, //{n}表示前面內(nèi)容出現(xiàn)的次數(shù)。 //正則表達(dá)式可寫作/^\d{3}-\d{3}-\d{4}$/, //有相同部分\d{3}-,因此也可寫作/^(\d{3}-){2}\d{4}$/

43

function isUSD(str) {return /^\$\d{1,3}(,\d{3})*(\.\d{2})?$/.test(str); } //本題注意點(diǎn)有必須是USD格式,以$開頭,數(shù)字結(jié)尾,$和小數(shù)點(diǎn)的轉(zhuǎn)義。 //首先,開頭必是$,而正則表達(dá)式中$表示結(jié)尾,需要進(jìn)行轉(zhuǎn)義,因此開頭為^\$ //然后$后必然接數(shù)字,并且最少一位,最多三位數(shù),可用{m,n}表示,最少m位,最多n位, //因此此段為\d{1,3} //接著,后面如還有數(shù),則必然有,分隔,并且后面必有3個(gè)數(shù),類似于, //XXX的格式會出現(xiàn)0或者n次,因此此段可表示為(,\d{3})* //最后,如有小數(shù)部分,則注意對小數(shù)點(diǎn)進(jìn)行轉(zhuǎn)義,此段可表示為(\.\d{2})? //因此,最后的正則表達(dá)式為/^\$\d{1,3}(,\d{3})*(\.\d{2})?$/ //使用test方法去檢測str

總結(jié)

以上是生活随笔為你收集整理的JavaScript 编程题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。