牛客網 前端程式設計題小結

2021-07-29 08:08:51 字數 4320 閱讀 4868

牛客網 前端程式設計題小結

雖然是最最基礎的js題,但是還是收穫不少,大家都很聰明啊!

concat()、slice() map()不改變原陣列

1.找出元素 item 在給定陣列 arr 中的位置 

如果陣列中存在 item,則返回元素在陣列中的位置,否則返回 -1

最基礎版本:

function indexof(arr,item) }

if (arr[arr.length]!=item) }

foreach版本:

function indexof(arr,item)

});return i; }

document.write(indexof([11,22,33,44],2));

indexof()版本:

function indexof(arr,item)

document.write(indexof([ 1, 2, 3, 4 ], 3));

2.計算給定陣列 arr 中所有元素的總和 陣列中的元素均為 number 型別

foreach版本:

function sum(arr) );

return sum; }

document.write(sum([1,2,3,4,5]));

reduce版本:

function sum(arr) ) }

document.write(sum([1,2,3,4,5]));

evel版本:

function sum(arr)

document.write(sum([1,2,3,4,5]));

3.移除陣列 arr 中的所有值與 item 相等的元素。不要直接修改陣列 arr,結果返回新的陣列 

foreach版本:

function remove(arr,item)

});return  i; }

document.write(remove([1,2,3,4,5],2));

filter版本:

function remove(arr,item));

return res; }

document.write(remove([1,2,3,4,5],2));

4.移除陣列 arr 中的所有值與 item 相等的元素,直接在給定的 arr 陣列上進行操作,並將結果返回 

function removewithoutcopy(arr, item) }

return arr; }

document.write(removewithoutcopy([1,2,2,3,4,5,2,2],2));

5.在陣列 arr 末尾新增元素 item。不要直接修改陣列 arr,結果返回新的陣列 

return arr.concat(item);//push會改變原陣列 }

6.刪除陣列 arr 最後乙個元素。不要直接修改陣列 arr,結果返回新的陣列 

function truncate(arr)

document.write(truncate([1,2,3,4]));

7.在陣列 arr 開頭新增元素 item。不要直接修改陣列 arr,結果返回新的陣列 

function prepend(arr, item)

8.刪除陣列 arr 第乙個元素。不要直接修改陣列 arr,結果返回新的陣列 

function curtail(arr)

document.write(curtail([1,2,3,4]));

9.合併陣列 arr1 和陣列 arr2。不要直接修改陣列 arr,結果返回新的陣列 

function concat(arr1, arr2)

10.在陣列 arr 的 index 處新增元素 item。不要直接修改陣列 arr,結果返回新的陣列 

function insert(arr, item, index)

11.統計陣列 arr 中值等於 item 的元素出現的次數 

最基礎版本:

function count(arr, item)

// statements

});return i; }

document.write(count([1, 2, 4, 4, 3, 4, 3], 4));

改進版:

function count(arr, item) );

return i; }

document.write(count([1, 2, 4, 4, 3, 4, 3], 4));

filter版本:

function count(arr, item) ).length; }

12.找出陣列 arr 中重複出現過的元素 

function duplicates(arr)

});return a; }

document.write(duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]));

filter版本:

function duplicate(arr)); }

document.write(duplicate([1, 2, 4, 4, 3, 3, 1, 5, 3]));

13.為陣列 arr 中的每個元素求二次方。不要直接修改陣列 arr,結果返回新的陣列 

function square(arr) );

return b; }

document.write(square([1, 2, 3, 4]));

map版本:

function square(arr) ) }

document.write(square([1, 2, 3, 4]));

14.在陣列 arr 中,查詢值與 item 相等的元素出現的所有位置 

最基礎版本:

function findalloccurrences(arr, target) }

return a; }

document.write(findalloccurrences('abcdefabc'.split(''), 『a'));

foreach版本:

function findalloccurrences(arr, target)

});return temp; }

foreach改進版:

function findalloccurrences(arr, target) );

return temp; }

15.實現函式 functionfunction,呼叫之後滿足如下條件:

1、返回值為乙個函式 f

2、呼叫返回的函式 f,返回值為按照呼叫順序的引數拼接,拼接字元為英文逗號加乙個空格,即 ', '

3、所有函式的引數數量為 1,且均為 string 型別 

function functionfunction(str)

return f; }

document.write(functionfunction(『hello』)('world'));

兩次呼叫函式,注意巢狀使用。

16.實現函式 makeclosures,呼叫之後滿足如下條件:

1、返回乙個函式陣列 result,長度與 arr 相同

2、執行 result 中第 i 個函式,即 result[i](),結果與 fn(arr[i]) 相同 

17.已知函式 fn 執行需要 3 個引數。請實現函式 partial,呼叫之後滿足如下條件:

1、返回乙個函式 result,該函式接受乙個引數

2、執行 result(str3) ,返回的結果與 fn(str1, str2, str3) 一致 

輸入例子:

var sayit = function(greeting, name, punctuation) ;  partial(sayit, 'hello', 'ellie')('!!!');

輸出例子:

hello, ellie!!!

基礎寫法:

function partial(fn, str1, str2)

return result; }

call版本:

function partial(fn, str1, str2)

return result; }

function partial(fn, str1, str2)

return result; }

bind版本:

function partial(fn, str1, str2)

return result; }

匿名函式版本

function partial(fn, str1, str2) }

牛客網程式設計題

參考了排行榜大神 1.計算字串最後乙個單詞的長度,單詞以空格隔開 a raw input b a.split print len b 1 2.寫出乙個程式,接受乙個有字母和數字以及空格組成的字串,和乙個字元,然後輸出輸入字串中含有該字元的個數。不區分大小寫 a raw input lower b r...

牛客網程式設計題1

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。思路 本題最初想簡單的求模算出等於1的位數,但是發現負數不行。其實簡單的做法應該是與 1相與,如果為 1,則原來為 1,迴圈移位判斷。但注意,要左移,要是右移,對於負數會一直在高位補 1,導致結果不準確。class solution ...

牛客網 程式設計題2

給定乙個陣列序列,需要求選出乙個區間,使得該區間是所有區間中經過如下計算的值最大的乙個 區間中的最小數 區間所有數的和最後程式輸出經過計算後的最大值即可,不需要輸出具體的區間。如給定序列 6 2 1 則根據上述公式,可得到所有可以選定各個區間的計算值 6 6 6 36 2 2 2 4 1 1 1 1...