1.如何判断一个变量是数组还是对象?
var arr = [1,2,3];
var obj = {val: 1};
(1)利用instanceof
console.log(arr instanceof Array); // true
console.log(arr instanceof Object); //true 数组是特殊的对象
console.log(obj instanceof Array); //false
console.log(obj instanceof Object); //true
(2)利用constructor
console.log(arr.constructor === Array); // true
console.log(obj.constructor === Object); // true
(3)利用 Object.prototype.toString.call()
console.log( Object.prototype.toString.call(arr)); //"[Object Array]"
console.log( Object.prototype.toString.call(obj)); //"[Object Object]"
(4)利用Array,isArray()
ECMAScript5将Array.isArray()正式引入JavaScript,目的就是准确地检测一个值是否为数组。IE9+、 Firefox 4+、Safari 5+、Opera 10.5+和 Chrome都实现了这个方法。但是在IE8之前的版本是不支持的。
Array.isArray(arr); //true
2.写一个函数将一个多维数组转换成一维数组
var arr = [1,[2,3,[4],5,],[6,7]];
(1)ES6中数组的扩展(只能解决二维数组)
var _arr = [].cancat.apply([],arr);
console.log(_arr);
(2)ES6中的新增的flat()
var _arr = arr.flat(3);
3.用date或者moment获取上个月的最后一天
moment().month(monment.month()-1).endOf('month").valueOf();
4.用reduce求出下面数组的和
var arr = [2,5,7,4,8]
arr.reduce(function(pre,cur){
return cur+pre;
})