1、實現數組亂序
var a = [1,2,3,4,5,6,7,8,9,0,12,23,45,90]; a.sort(function (a,b) { var sign = (Math.random()>0.5) ? 1 : -1; return (a-b)*sign; });
2、reduce的使用
//有一個長度為100的數組,請以優雅的方式求出該數組的前10個元素之和 var b = [1,2,3,4,5,6,7,8,9,10]; var sum = b.slice(0,10).reduce(function (pre,cur) { return pre + cur; },0);
3、有一個長度為100的數組,值為其所在位置的索引
var a = new Array(100); a = a.join(",").split(",").map(function(item, index) { return index; });
4、如何消除數組中重復的元素
function deRepeat(arr) { let newArr = []; arr.map(function (item) { if(newArr.indexOf(item) === -1){ newArr.push(item); } }); return newArr; }
5、對象的深淺拷貝
淺拷貝:只是拷貝了基本類型的數據,對於數組或對象的話,拷貝的只是其內存地址,因此存在原對象被篡改的可能;
function copy(p) { let c = {}; for(let i in p) { c[i] = p[i]; } return c; }
深拷貝
//深拷貝 function deepcopy(p,c) { let d = c || {}; for(let i in p) { if(typeof p[i] === 'object'){ d[i] = (p[i].constructor === Array) ? []:{}; deepcopy(p[i],d[i]); }else { d[i] = p[i]; } } return d; }
ps.Object.assign()方法是淺拷貝。