JS一些有趣的面試題(即時更新)

1、對象的引用

 var a = {n:1};
 var b = a;
 a.x = a = {n:2};
 console.log(a.x); //undefined
 console.log(b.x); // {n:2}
 
//js中變量賦值從右向左執行,但是點的優先級最高,所以先是a.x = {n:2},改變了a的內存
// 但是{n:2}又賦值給了a, a此時已經等於{n:2} ,b = a, 相當於b = { n:1, x:{ n:2 }};

1、數組隨機排序

//方法一:
var arr = [1,2,3,4,5,6,7,8,9,10];
function randSort1(arr){
for(var i = 0,len = arr.length;i < len; i++ ){
var rand = parseInt(Math.random()*len);
var temp = arr[rand];
arr[rand] = arr[i];
arr[i] = temp;
}
return arr;
}
console.log(randSort1(arr));
//方法二:
var arr = [1,2,3,4,5,6,7,8,9,10];
function randSort2(arr){
var mixedArray = [];
while(arr.length > 0){
var randomIndex = parseInt(Math.random()*arr.length);
mixedArray.push(arr[randomIndex]);
arr.splice(randomIndex, 1);
}
return mixedArray;
}
console.log(randSort2(arr));

//方法三:
var arr = [1,2,3,4,5,6,7,8,9,10];
arr.sort(function(){
return Math.random() - 0.5;
})
console.log(arr);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章