01======查找元素=
var i=arr.indexOf("元素值",starti)
在arr中,从starti位置开始,找下一个匹配的元素的位置i
如果找到,返回元素的位置
如果找不到,返回-1
02======判断: 判断数组中的元素是否符合要求 every和some=
- 判断数组中的元素是否都符合要求:
var bool=arr.every(function(elem, i, arr){
//回调函数: 自动在每个元素上执行一次
//每次调用时,都会拿到三个值:
// elem 自动获得当前正在遍历的元素值
// i 自动获得当前正在遍历的元素位置
// arr 自动获得当前正在遍历的整个数组对象
return 判断条件
})
//原理: 如果将回调函数去每个元素上都调用一次,都返回true,整个every才返回true
//如果调用过程中,只要有一个元素返回false,则整个every返回false
- 判断数组中是否包含符合要求的元素:
var bool=arr.some(function(elem,i,arr){
return 判断条件
})
//原理: 只要有一个元素判断返回true,整个some()就返回true。
//除非所有元素判断后都返回false,整个some()才返回false
03================遍历:对数组中每个元素执行相同的操作=
01:forEach对原数组中的每个元素执行相同的操作–原始类型
//对原数组中每个元素执行相同的操作
var arr=[1,3,4,3,2,3];
arr.forEach(
function(elem,i,arr){
// console.log(`自动调用一次回调函数,收到${elem}`)
arr[i]*=2;
// console.log(`*2后变为${elem}`);
}
)
console.log(arr); //[2, 6, 8, 6, 4, 6]
01:forEach对原数组中的每个元素执行相同的操作–引用类型
var emps=[
{eid:1,ename:'liang',salary:12000},
{eid:2,ename:'guang',salary:12000},
{eid:3,ename:'song',salary:12000}
];
//对于对象数组来说 每个对象也不是存在在数组内部,其实都是存在数组外部
//而数组中每个元素存的其实是对象的地址值
emps.forEach(function(elem){
elem.salary+=2000;
})
console.log(emps);
//复制的时候 复制的是地址值 因为是引用类型的数据 对地址做任何操作,就相当于对原对象做任何操作
02:map
//取出原数组中每个元素,执行相同操作后,放入新数组中返回
//保持原数组不变 生成一个新的数组 map就是映射的意思
var arr=[1,2,3,4,5,6];
var newArr=arr.map(
function(elem){
return `<li>${elem}</li>`;
}
);
console.log(arr); //[1, 2, 3, 4, 5, 6]
console.log(newArr);
//["<li>1</li>", "<li>2</li>", "<li>3</li>", "<li>4</li>", "<li>5</li>", "<li>6</li>"]
04================过滤和汇总=
01:reduce 汇总:对数组内的元素进行求和汇总
reduce 汇总:对数组内的元素进行求和汇总
<script>
var arr=[1,2,3,4,5];
var sum=arr.reduce(
function(prev,elem){
return prev+elem;
}
)
console.log(sum); //15
02:filter 筛选 过滤:复制出数组中符合条件的元素 组成新数组
filter 筛选 过滤:复制出数组中符合条件的元素 组成新数组
filter 不改变原数组
filter 不改变原数组
<script>
// 筛选出偶数
var arr=[1,2,3,4,5];
var newArr=arr.filter(
function(elem){
return elem%2==0
}
)
console.log(arr); //[1,2,3,4,5]
console.log(newArr); //[2,4]