牛客網的線上程式設計
二分查詢
function binary_search(arr, key) { var low = 0, high = arr.length - 1; while(low <= high){ var mid = parseInt((high + low) / 2); if(key == arr[mid]){ return mid; }else if(key > arr[mid]){ low = mid + 1; }else if(key < arr[mid]){ high = mid -1; } } return -1; }
實現一個打點計時器,要求
1、從 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一個數字,每次數字增幅為 1
2、返回的物件中需要包含一個 cancel 方法,用於停止定時操作
3、第一個數需要立即輸出
function count(start, end) {
console.log(start++);
var p= setInterval(function(){
if(start<=end){
console.log(start++);
} else{
clearInterval(p);
}
},100)
return {
cancel: function(){
clearInterval(p);
}
}
}
找出陣列 arr 中重複出現過的元素
輸入
[1, 2, 4, 4, 3, 3, 1, 5, 3]
輸出
[1, 3, 4]
方法一 function duplicates(arr) {
var newArray = [];
arr.map(function(item,index){
if(arr.indexOf(item) !== arr.lastIndexOf(item)){
newArray.push(item);
}
})
return newArray.filter(function(item,index){
return index === newArray.indexOf(item)
})
}
方法二
function duplicates(arr) {
var result = [];
arr.forEach(function(elem){
if(arr.indexOf(elem) !=arr.lastIndexOf(elem) && result.indexOf(elem) == -1){
result.push(elem);
}
});
return result;
}
移除陣列 arr 中的所有值與 item 相等的元素,直接在給定的 arr 陣列上進行操作,並將結果返回。
function removeWithoutCopy(arr, item) {
var array = [];
arr.map(function(a,index,arr){
if(a === item){
arr.splice(index,index+1);
}
})
return arr
}
陣列去重
let arr = ['1', '2', '3', '1', 'a', 'b', 'b']
const unique =
arr => {
return arr.filter((ele, index, array) => {
return index === array.indexOf(ele)
})
} console.log(unique(arr)) // ['1','2','3','a','b']
使用Math裡面自帶的max和min方法
function getMaxOfArray(numArray) {
return Math.max.apply(null, numArray);
}
返回陣列中最大的差值
let arr = [23, 4, 5, 2, 4, 5, 6, 6, 71, -3];
const difference = arr => {
let min = arr[0], max = 0;
arr.forEach(value => {
if (value < min)
min = value
if (value > max) max = value })
return max - min ;
}
console.log(difference(arr)) // 74
深拷貝
function deepClone(obj) {
var temp = Array.isArray(obj) ? [] : {};
for (var key in obj) {
temp[key] = typeof obj[key] === 'object' ? deepClone(key) : obj[key]
}
return temp;
}
var foo = deepClone({
name: 'wayne',
age: 21,
others: {
school: 'xjtu',
province: 'xinjiang'
}
})
淺拷貝:
陣列
var a = [2, [3,5,7], {name: 'wayne'}];
var b = a.slice(0)
物件
var obj1 = {
name: 'wayne',
age: 22,
other: {
hobby: 'table',
school: 'xjtu'
}
}
var obj2 = Object.assign({}, obj1);