JS对数组操作的方法

1、push()

push():向数组的末尾添加一个或多个元素,并返回新的长度

用法:

arrayObject.push(item1,item1,…,item1)

参数 描述:
item1必需。要添加到数组的第一个元素。
item1可选。要添加到数组的第二个元素。
item1可选。可添加多个元素。

2、pop()

pop():删除并返回数组的最后一个元素
用法

arr.pop()

3、shift()

shift():从数组中删除第一个元素,并返回该元素的值
用法

arrayObject.shift()

4、unshift()

unshift():向数组的开头添加一个或更多元素,并返回新的长度

用法
it

arr.unshift(item1,item,…,itemX)

参数 描述
item1必需。要添加到数组的第一个元素。
item2可选。要添加到数组的第二个元素。
itemX可选。可添加多个元素。

5、splice()

splice():向/从数组中添加/删除项目,然后返回被删除的项目。
用法

arr.splice(index,howmany,item1,…,itemX)

参数 描述
index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, …, itemX 可选。向数组添加的新项目。

6、sort()

sort():对数组的元素进行排序。
用法

arr.sort(sortby)

参数 描述
sortby 可选。规定排序顺序。必须是函数。
说明

function sortby(a, b)
{
return b - a //倒序
return a - b //顺序
}

7、reverse()

reverse():用于颠倒数组中元素的顺序。
用法

arr.reverse()

8、filter()

filter():向/从数组中添加/删除项目,然后返回被删除的项目。

用法
filter(function(){}): 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

9、concat()

concat(): 方法用于连接两个或多个数组。

用法

arr.concat(item,item,…,item)

参数 描述
item必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。

10、slice()

slice(start,end):从已有的数组中返回选定的元素。
用法
arr.slice(start,end)

参数 描述
start 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

11、find()

find() 方法返回通过函数判断的数组的第一个元素的值。
find() 方法为数组中的每个元素都调用一次函数执行:
当数组中的元素在测试条件时返回true时,find() 返回符合条件的元素,之后的值不会再调用执行函数。
如果没有符合条件的元素返回 undefined。

let arr = [
  {id:'1',name:'lisi',age:30},
  {id:'2',name:'zhangsan',age:20},
  {id:'3',name:'lisi',age:30}
]
//找到 age 为 30的值
arr .find(item=>item.age===30)  //{id: "1", name: "lisi", age: 30}
//找到 age为 301的值
arr .find(item=>item.age===301) //undefined

12、filter()

filter是一个过滤器属性 可以给他一个判定条件 符合条件的会返回一个新数组
注意:会改变原来的数组

let arr = [
  {id:'1',name:'lisi',age:30},
  {id:'2',name:'zhangsan',age:20},
  {id:'3',name:'lisi',age:30}
]
//找到 age 为 30的所有值
arr.filter(item=>item.age===30) //[{id:'1',name:'lisi',age:30},{id:'3',name:'lisi',age:30}]
//找到 age为 301的所有值
arr.filter(item=>item.age===301) //[]

13、every()

every() 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。
注意:若收到一个空数组,此方法在一切情况下都会返回 true。

let arr = [1,2,3,4,5]
//检测数组的每一项是否都大于0
arr.every(item=>item>0) //true
//检测数组的每一项是否都大于1
arr.every(item=>item>1) //false
//用户列表
let List = [
  {id:'1',name:'lisi',age:30},
  {id:'2',name:'zhangsan',age:20},
  {id:'3',name:'wangermazi',age:30},
  {id:'4',name:'xiaoming',age:18},
  {id:'5',name:'wuming',age:30},
]
//未成年检测
List.every(item=>item.age>=18)//true

14、includes()

includes() 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。

let arr = [1,2,3,4,5]
//检测数组中是否包含 4
arr.includes(4) //true
arr.includes(6) //false

15、some()

some() 方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。
注意:如果用一个空数组进行测试,在任何情况下它返回的都是false。
callback 被调用时传入三个参数:元素的值,元素的索引,被遍历的数组。
some() 为数组中的每一个元素执行一次 callback 函数,直到找到一个使得 callback 返回一个“真值”(即可转换为布尔值 true 的值)。如果找到了这样一个值,some() 将会立即返回 true。否则,some() 返回 false。callback 只会在那些”有值“的索引上被调用,不会在那些被删除或从来未被赋值的索引上调用。
针对json

//用户列表
let List = [
  {id:'1',name:'lisi',age:30},
  {id:'2',name:'zhangsan',age:20},
  {id:'3',name:'wangermazi',age:30},
  {id:'4',name:'xiaoming',age:18},
  {id:'5',name:'wuming',age:30},
]
//用户列表中是否包含年龄20岁的
List .some(item=>item.age===20) // true
//用户列表中是否包含年龄201岁的
List .some(item=>item.age===201)// false
-----------------------------------------------------
//下面的例子检测在数组中是否有元素大于 10。
 function arr(element, index, array) {
            return element > 10;
        }
[2, 5, 8, 1, 4].some(arr); // false
 [12, 5, 8, 1, 4].some(arr); // true

16、reduce()

reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
当然最简单的就是我们常用的数组求和,求乘积了

--------------------------------------取出值
let list = [1, 2, 3, 4, 5]
let arr = list.reduce((pre, cur) => pre += cur, '')
console.log(arr); //'12345'
------------------------------------------求和
  let list = ['1', '2', '3', '2', '1'];
  let num = list.reduce((pre, cur) => {
            if (cur in pre) {
                pre[cur]++
            } else {
                pre[cur] = 1
            }
            return pre
        }, {}) 
        console.log(num); //{1: 2, 2: 2, 3: 1}
-----------------------------------------去重
let arr = [1, 2, 3, 4, 4, 1]
let newArr = arr.reduce((pre, cur) => {
            if (!pre.includes(cur)) {
                return pre.concat(cur)
            } else {
                return pre
            }
        }, []) 
console.log(newArr); // [1, 2, 3, 4]
------------------------------------------对象里的属性求和
let list = [{
            subject: 'math',
            score: 10
        }, {
            subject: 'chinese',
            score: 20
        }, {
            subject: 'english',
            score: 30
        }];
let sum = list.reduce((prev, cur) => {
            return cur.score + prev;
        }, 0);
console.log(sum) //60

17、findIndex()

findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。
findIndex() 方法为数组中的每个元素都调用一次函数执行:
当数组中的元素在测试条件返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
如果没有符合条件的元素返回 -1
findIndex()与find()的使用方法相同,findIndex()当中的回调函数也是接收三个参数,与find()相同。
findIndex()方法实现是通过循环遍历查找。应用场景广泛,可以查找大于等于小于,表达式可以随便写。实际上相当于一个for循环,只不过找到了你不需要自己退出。

let arr= [
  {id:'1',name:'lisi',age:30},
  {id:'2',name:'zhangsan',age:20},
  {id:'3',name:'lisi',age:30}
]
// 查询age为30的第一个值的索引
arr.findIndex(item=>item.age===30)//0
function fn(arr,callback){
    let res= []
    for(let i=0;i<arr.length;i++){
        if(callback(arr[i])){
            res.push(i)
        }
    }
    return res
}

let arr= [
  {id:'1',name:'lisi',age:30},
  {id:'2',name:'zhangsan',age:20},
  {id:'3',name:'wangermazi',age:30},
  {id:'4',name:'xiaoming',age:18},
  {id:'5',name:'wuming',age:30},
]
//从arr数组中  找到符合给定条件的值的所有索引
fn(arr,item=>item.age==30)//  [0, 2, 4]
fn(arr,item=>item.age==18)//  [3]
fn(arr,item=>item.age==20)//  [1]
fn(arr,item=>item.age==201)// []
function fn(jsonArr,callback){
    let aArr = arr.reverse()
    let index = arr.findIndex(callback)
    return index>-1?arr.length-index-1:-1
}
let arr= [
  {id:'1',name:'lisi',age:30},
  {id:'2',name:'zhangsan',age:20},
  {id:'3',name:'wangermazi',age:30},
  {id:'4',name:'xiaoming',age:18},
  {id:'5',name:'wuming',age:30},
]

fn(arr,item=>item.age==18) // 索引3
fn(arr,item=>item.age==30) // 索引4

18、indexOf (从前向后查找)(字符串和数组都可以用)

方法可返回某个指定的字符串值在字符串中首次出现的位置。
在数组里面返回的是索引值
参数:
value:必需,规定需检索的字符串值。可选的整数参数。
index:规定在字符串中开始检索的位置。它的合法取值是 0 到 arr.length - 1。如省略该参数,则将从字符串的首字符开始检索。

let arr = [1,2,1,4]
arr.indexOf(1)//索引0

indexOf和lastIndexOf用法一样唯一区别就是一个从前 一个从后

19、lastIndexOf**(从后向前查找)(字符串和数组都可以用)

是从后向前查询,返回的是指定的字符串值最后出现的位置(记住这个最后是以从左到右为维度的,看下面栗子就会明白的)。
在数组中用lastIndexOf是返回的索引值

let arr = [1,2,1,4]
arr.lastIndexOf(1)//索引2

20、fill()数组填充**

fill() 方法用于将一个固定值替换数组元素。
参数:
value 必须。填充值。
start 可选,开始填充位置
end 可选,停止填充位置(默认为list.length)

const list= [{}, {}]
[...list, ...new Array(3).fill({})].slice(0,3)
// output: [{}, {}, {}]

归纳的不是很全;希望对你有所帮助

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值