数组和对象的API
数组API:
- forEach遍历所有元素
- every判断所有元素是否都符合条件(返回true或false)
- some判断是否有至少一个元素符合条件
- sort排序
- map对元素重新组装,生成新数组
- filter过滤符合条件的元素
注:forEach与map用法相似都是遍历数组的每一项值;
区别:map的回调函数中支持return的返回值
1、forEach:
var arr = [1,3,5,2,3];
arr.forEach(function (item,index) {
console.log("索引:"+index,"元素:"+item);
})
输出: 索引:0 元素:1
索引:1 元素:3
索引:2 元素:5
索引:3 元素:2
索引:4 元素:3
2、every:碰到一个返回不符合条件的,就返回false
var arr = [1,3,5,2,3,4];
var result = arr.every(function (item,index) {
if(item<4){
return true;
}
})
console.log(result);
输出:false
3、some:碰到一个true的值就直接返回。
var arr = [1,3,5,2,3,4];
var result = arr.some(function (item,index) {
if(item<2){
return true;
}
})
console.log(result);
输出:true
4、sort:
var arr = [1,3,5,2,3,4];
var arr1 = arr.sort(function (a,b) {
return a-b; //从小到大排序
//return b-a; //从大到小排序
})
console.log(arr1);
输出:[1, 2, 3, 3, 4, 5]
5、map:将元素重新组装并返回
var arr = [1,3,5,2,3,4];
var arr2 = arr.map(function (item,index) {
return item*item;
})
console.log(arr2);
输出:[1, 9, 25, 4, 9, 16]
6、filter:通过某一条件过滤数组
var arr = [1,3,5,2,3,4];
var arr3 = arr.filter(function (item,index) {
if(item>2){
return true;
}
})
console.log(arr3);
输出:[3, 5, 3, 4]
对象API:
var obj = {
x:100,
y:200,
z:300
}
var key;
for(key in obj){
if(obj.hasOwnProperty(key)){//hasOwnProperty是判断对象实例的是否具有某个属性
console.log(key,obj[key]);
}
}
输出:x 100
y 200
z 300
解题:
1、获取2018-03-21格式的日期
function formateDate(dt) {
if(!dt){
dt = new Date();
}
var year = dt.getFullYear();
var month = dt.getMonth()+1;
var date = dt.getDate();
if(month<10){
month = "0" + month; //强制类型转换
}
if(date<10){
date = "0" + date; //强制类型转换
}
return year + "-" + month + "-" + date;
}
var dt = new Date();
var date = formateDate(dt);
console.log(date);
2、获取随机数,要求是长度一致的字符串格式
var random = Math.random();
var random = random + '0000000000'; //末尾加0补位
var random = random.slice(0,10); //截取前10位
console.log(random);
3、写一个能遍历对象和数组的forEach函数
function forEach(obj,fn) {
var key;
if(obj instanceof Array){ //判断是数组
obj.forEach(function (item,index) {
fn(index,item);
})
}else{ //对象
for(key in obj){
fn(key,obj[key]);
}
}
}
//数组
var arrs = [1,2,3];
forEach(arrs,function (index,item) {
console.log(index,item);
})
//对象
var obj = {x:100,y:200};
forEach(obj,function (key,value) {
console.log(key,value);
})
输出: