牛客網 前端程式設計題小結
雖然是最最基礎的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...