2-1. for in
var arr = ['html', 'css', 'js'];
for (var key in arr) {
// console.log(key);
console.log(arr[key]);
}
console.log('--------------------------------------------');
var obj = {
name: 'lis',
age: 18
}
for (var k in obj) {
// console.log(k);
console.log(obj[k]);
}
2-2. for of
var arr = [3, 5, 7];
for (var value of arr) {
// console.log(arr.indexOf(value));
console.log(value);
}
2-3. forEach( )
遍历数组中的每一项,没有返回值,对原数组没有影响
var arr = ['html','css','js'];
arr.forEach(function(item){
console.log(item);
})
console.log('------------------------------');
var test = [2,3,4];
var newTest = [];
test.forEach(function(e){
newTest.push(e*2);
})
console.log(newTest);
console.log('------------------------------');
var names = [
{name:'张三'},
{name:'李四'}
]
names.forEach(function(e){
e.like = true;
})
console.log(names);
2-4. map( )
可以改变数组的每一项,变成一个新数组
var arr = [2,3,4,5]
var res = arr.map((item=>{
return item*2
}))
console.log(arr); // [2,3,4,5]
console.log(res); // [4,6,8,10]
- 注意点:
```css var arr =[1,2,3] var res = arr.map(item =>{ return item*3 }) console.log(res); console.log(arr); // 没有改变数组原来的结构1.数组的每一项是基础(简单)类型,执行map不会改变数组原来的结构
2.数组的每一项为复杂类型,会改变原来的数据结构
var obj =[ {name:”liu”,age:10}, {name:”zhang”,age:11} ] var result = obj.map(item =>{ return item.age = 0; }) console.log(result); console.log(obj); // 改变了数组原来的结构
<a name="YLJPp"></a>
# 2-5. some( )
只要数组中有一项满足条件,就输出true
```css
var arr = [1,2,3,4,5]
var res = arr.some(item =>{
return item>3
})
console.log(res); // true
2-6. every( )
数组中的每一项满足条件,才输出true
var arr = [1,2,3,4,5]
var str = arr.every(item => item >2)
console.log(str); //false
2-7. filter( )筛选,过滤
注:此方法也不会改变原始数组,会返回一个筛选成功匹配的元素组成的新数组。
// 查找符合条件的元素,主要用于筛选
var arr =[1,2,3,4,5]
var res = arr.filter(item =>item>2)
console.log(res); //3,4,5
2-8. find( )
// 找到一个就返回匹配的元素,没找到就返回 undefined
var arr = [1, 2, 3, 4, 5, 6]
var newArr = arr.find(val => {
return val > 2
})
console.log(newArr) // 3
2-9. findIndex( )
// 找到符合条件的就返回 返回对应的下标,没找到就返回-1
var arr = [1,2,3,2]
var index = arr.findIndex(item=>{
return item == 2;
})
console.log(index); // 1
案例
历史搜索
<body>
<h5>历史搜索</h5>
<input type="text" name="" id="inp">
<div class="box">
</div>
<script>
var arr=[];
$("#inp").keyup(function(e){
if(e.keyCode==13){
// console.log(Boolean($(this).val()));
var value=$(this).val();
var temp=`
<button>
${value}
</button>
`
if(value && !arr.includes(value)){
arr.unshift(value);
//渲染数据到页面
console.log(arr);
$(".box").prepend(temp);
$(this).val("");
}else{
//4.当输入的值数组中存在的时候,让其至于数组的首位
console.log(value);
var index=arr.indexOf(value);
var res= arr.splice(index,1);
arr.unshift(res);
console.log(arr);
//ui联动
$(".box button").eq(index).remove();
$(".box").prepend(temp);
}
}
})