js中数组大全的方法总结

2 篇文章 0 订阅
1 篇文章 0 订阅

1、join() 将数组转换为字符串,默认是逗号。不改变原数组,返回转换后的字符串

  var arr = ["Banana", "Orange","Apple", "Pear"];
  var fruits  = arr.join(" * "); 
  console.log(fruits);  //  Banana * Orange * Apple * Pear
  console.log(arr)  // 原数组不变["Banana", "Orange","Apple", "Pear"]
    

2、pop() 方法 从数组中删除最后一个元素,返回值是删除的元素:尾部删除,返回被删除的元素,改变原数组

    var arr = ["Banana", "Orange","Apple", "Pear"];
    var fruits  = arr.pop(); 
    console.log(fruits);  //  返回值为 Pear
    

3、push() 方法 向数组结 尾处添加一个新的元素:末尾添加,返回长度,改变原数组

    var arr = ["Banana", "Orange","Apple", "Pear"];
    var fruits  = arr.push("Grape");
    console.log(fruits);  // 返回值是新数组长度 5
    

4、shift()方法 删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined 。这和pop()正好相反。删除首部元素,返回被删元素,改变原数组


    var arr = ["Banana", "Orange","Apple", "Pear"];
    var fruits  = arr.shift();
    console.log(fruits);  // 返回删除的元素值 Banana
    

5、unshift()方法 向数组头部添加元素 , 返回新数组的长度。这和push()正好相反。首部添加,返回长度,改变原数组


    var arr = ["Banana", "Orange","Apple", "Pear"];
    var fruits  = arr.unshift('Grape');
    console.log(fruits);  // 返回新数组长度 5
    

6、splice()方法功能比较强大,可以实现对数组元素的删除、添加、替换对数组进行删除修改,返回被删除的元素组成的数组,改变原数组


该方法接受三个参数:

 index:第一个参数定义了应添加新元素的位置(下标)。
 length: 第二个参数定义应删除多少个元素。
 N: 其余参数定义要添加的新元素。
向数组添加元素 ( 从下标2开始删除0项元素,并从下标2处插入元素 'Lemon','C' )
    var arr = ["Banana", "Orange","Apple", "Pear"];
    var fruits  = arr.splice(2,0,'Lemon','Grape');
    console.log(fruits);  // 返回删除元素组成的数组 []
    console.log(arr)  // ["Banana", "Orange", "Lemon", "Grape", "Apple", "Pear"]
    
删除数组的元素 ( 从下标2开始删除2项元素,并从下标2处插入元素 'Lemon','Grape' )
    var arr = ["Banana", "Orange","Apple", "Pear"];
    var fruits  = arr.splice(2,2,'Lemon','Grape');
    console.log(fruits);  // 返回删除元素组成的数组 ["Apple", "Pear"]
    console.log(arr)  // ["Banana", "Orange", "Lemon", "Grape"]
替换数组的元素 (从下标2开始删除1项元素,并从下标2处插入元素 'Lemon',其实和删除数组是同样的)
    var arr = ["Banana", "Orange","Apple", "Pear"];
    var fruits  = arr.splice(2,1,'Lemon');
    console.log(fruits);  // 返回删除元素组成的数组 ["Apple"]
    console.log(arr)  // ["Banana", "Orange", "Lemon", "Pear"]

 例子2:

 copyNew(time,index){
   console.log(time)
   let newList = {
     id:time.id,
     name1:time.name1,
     name2:time.name2,
   }
   //第一个参数为需要操作数据的下标,第二个参数为操作添加/删除(0为添加,1为不操作,2为删除,3为删除多条数据),第三个参数可选
   this.listTable.splice(index,0,newList) 
   console.log(this.listTable)
 }

7、slice() 方法用数组的某个片段切出新数组。该方法不改变原数组:返回新数组,不改变原数组

该方法接收两个参数:

   startIndex:第一个参数是开始截取位置
   endIndex第二个参数是结束位置,但不包含
   例如 arr.slice(2,4)表示从下标2开始到下标4结束,但是不包含下标为4的那一项元素,
   所以截取的是下标为2和3的两项

    var arr = ["Banana", "Orange","Apple", "Pear"];
    var fruits  = arr.slice(2,3);
    console.log(fruits);  // 返回截取出来的元素组成的新数组["Apple"]
    console.log(arr)  // 原数组未改变 ["Banana", "Orange", "Apple", "Pear"]
    

-- 如果第二个参数省略不写的话,则会截取数组剩余的部分


    var arr = ["Banana", "Orange","Apple", "Pear"];
    var fruits  = arr.slice(1);
    console.log(fruits);  // ["Orange","Apple", "Pear"]
    console.log(arr)  // ["Banana", "Orange", "Apple", "Pear"]

   -- 参数也可以是负数,这时就是从原数组的后面往前截取
   例如:arr.slice(1,-2) 从数组下标为1开始截取到倒数第二项(不包含)
 


    var arr = ["Banana", "Orange","Apple", "Pear"];
    var fruits  = arr.slice(1,-2);
    console.log(fruits);  // ["Orange"]
    console.log(arr)  // ["Banana", "Orange", "Apple", "Pear"]
    

8、concat() 方法用来合并数组, 通过向原数组添加参数来创建一个新数组,不改变原数组

合并两个或多个数组,返回新数组,不会改变原数组


    var myGirls = ["Cecilie", "Lone"];
    var myBoys = ["Emil", "Tobias", "Linus"];
    var myChildren = myGirls.concat(myBoys);
    console.log(myChildren);  // ["Cecilie", "Lone", "Emil", "Tobias", "Linus"]
    

9、sort() 方法以字符编码顺序对数组进行排序, 默认升序。改变原数组,返回排序后的数组

    var myGirls = ['a', 'e', 'd', 'c', 'b'];
    console.log(myGirls.sort());  // ["a", "b", "c", "d", "e"]

   -- 如果是数字的话,就会出现排序不正确。因为sort()是按照字符编码的顺序进行排序。
   这时需要通过一个比值函数来修正此问题,也就是sort()传入一个函数。

    var myGirls = [21, 48, 6, 13, 38];
    console.log(myGirls.sort());  // 排序错误[13, 21, 38, 48, 6]
    
    var myGirls = [21, 48, 6, 13, 38];
    // myGirls.sort(function(a,b){return a-b})  a-b是升序
    // myGirls.sort(function(a,b){return b-a})  b-a是降序
    console.log(myGirls.sort(function(a,b){return a-b}));  // 排序正确[6, 13, 21, 38, 48]
    console.log(myGirls.sort(function(a,b){return b-a}));  // 排序正确[48, 38, 21, 13, 6]

--    也可以以随机顺序进行排序,这时sort()的比值函数要写成

function(a, b){return 0.5 - Math.random()}

    var points = [40, 100, 1, 5, 25, 10];
    points.sort(function(a, b){return 0.5 - Math.random()}); 
    console.log(points);  //每一次的结果都不相同 [10, 100, 5, 40, 25, 1]

--    JavaScript 数组经常会包含对象:

var cars = [{type:"Volvo", year:2016},{type:"Saab", year:2001},{type:"BMW", year:2010}],

        即使对象拥有不同数据类型的属性,sort() 方法仍可用于对数组进行排序。
   解决方法是通过比较函数来对比属性值:

var cars = [{type:"Volvo", year:2016},
    {type:"Saab", year:2001},
     {type:"BMW", year:2010}]
cars.sort(function(a, b){return a.year - b.year});
console.log(cars)  // [{type:"Saab", year:2001},{type:"BMW", year:2010},
{type:"Volvo", year:2016},]

10、reverse() 方法, 反转数组中的元素。该方法会改变原数组。返回的是颠倒后的数组,会改变原数组

    var myBoys = ["Emil", "Tobias", "Linus"];
    console.log(myBoys.reverse());  // ["Linus", "Tobias", "Emil"]
    console.log(myBoys);  // 原数组改变了 ["Linus", "Tobias", "Emil"]

-- 当然你也可以结合sort()对数组进行降序排序

    var fruits = ["Banana", "Orange", "Apple", "Pear"];
    fruits.sort();        // 先对 fruits 中的元素进行升序排序
    fruits.reverse();     // 反转元素顺序
    console.log(fruits);  // 得到降序 ["Orange", "Pear", "Banana", "Apple"]

11、forEach() 对数组进行遍历循环,该方法没有返回值,不改变原数组,参数是一个function。

    var numbers = [45, 4, 9, 16, 25];
    numbers.forEach(function(item, index, arr){
        console.log(item)
    })
    // 打印结果 45, 4, 9, 16, 25
    // 箭头函数写法
    numbers.forEach((item, index, arr) => {
        console.log(item);
    })

12、map() 方法指“映射”,对数组中的每一项参数执行给定函数,返回每次函数调用的结果组成的数组。原数组不变

    var numbers1 = [45, 4, 9, 16, 25];
    var numbers2 = numbers1.map(function myFunction(value, index, array) {
                    return value * 2;
                    });
    console.log(numbers1);  // 原数组未改变 [45, 4, 9, 16, 25]
    console.log(numbers2);  // 返回值为函数执行后结果组成的数组[90, 8, 18, 32, 50]

13、filter() 方法,‘过滤’数组符合条件的元素,返回值为符合条件元素组成的新数组。原数组不变

let a = [1,2,3,4,11]
// 第一个参数为一个方法,有三个参数,current:当前值 index:当前值下标 array:这个数组对象
let b = a.filter(function(current,index,array){
    return current < 10
})
 
console.log(b) // [1,2,3,4]
console.log(a) // [1,2,3,4,11]
 
//数组对象根据某个对象中的值删除该对象
const arr = [
	{ name: '王佳斌', age: '20' },
	{ name: '孙玉红', age: '15' }
]
arr = arr.filter(item => item.age !== '15')
// arr = [{ name: '王佳斌', age: '20' }]

14、reduce()和 reduceRight()
这两个方法都会实现迭代数组的所有项,然后构建一个最终返回的值。reduce()方法从数组的第一项开始,逐个遍历到最后。而 reduceRight()则从数组的最后一项开始,向前遍历到第一项。
这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。
传给 reduce()和 reduceRight()的函数接收 4 个参数:前一个值、当前值、项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。
下面代码用reduce()实现数组求和,数组一开始加了一个初始值10。
 

    var values = [1,2,3,4,5];
    var sum = values.reduceRight(function(prev, cur, index, array){
    return prev + cur;
    },10);
    console.log(sum); //25

15、every() 方法检查数组每一项的值是否通过条件。返回true或false。只有每一项都通过,才会返回true。

let a = [1,2,3,4,5]
 
let b = a.every(function(current,index,array){
       return current < 6
})
 
let c = a.every(function(current,index,array){
       return current < 3
})
console.log(b)  // true 
console.log(c)  // false 

16、some() 方法检查数组某一项的值是否通过条件。返回true或false。只要有一项通过,就会返回true。

let a = [1,2,3,4,5]
 
let b = a.some(function(current,index,array){
       return current > 4
})
 
let c = a.some(function(current,index,array){
       return current > 5
})
console.log(b)  // true 
console.log(c)  // false 

17、indexOf() 方法在数组中搜索元素值并返回其位置。接受两个参数,第一个参数是要查找的元素,第二个参数是从哪里开始查找.如果未找到项目,Array.indexOf() 返回 -1。如果项目多次出现,则返回第一次出现的位置。

lastIndexOf() 方法和indexOf()的区别是,lastindexOf()是从数组尾部往前查找。其他都相同

不会改变原数组,返回找到的index,否则返回-1

    var fruits = ["Apple", "Orange", "Apple", "Pear"];
    var a = fruits.indexOf("Apple");
    var b = fruits.indexOf("Apple",2);
    var c = fruits.indexOf("BBB")
    console.log(fruits);  // ["Apple", "Orange", "Apple", "Pear"]
    console.log(a);   // 多次出现返回第一次出现的位置 0
    console.log(b);   // 2
    console.log(c);   // 找不到就返回 -1

18、find() 方法一般在需要使用找到的元素时

和filter()方法的区别在于:filter返回值是所有满足条件的元素组成的数组

找到数组中第一次满足条件的元素,并返回,若找不到则返回undefined。不改变原数组。

let a = [1,2,3,4]
// b在下面需要使用,则一般用find
let b = a.find(function(ele,index,array){
    return ele == 1
})
 
let c = 3
let d = b + c
console.log(a) // [1,2,3,4]
console.log(b) // 1
console.log(d) // 4
 
// 若只需判断元素是否存在
// 若果是简单数组(非对象数组),则一般使用Array.includes(value)方法
// 如果为对象数组,则可以使用Array.some()方法
 
let a = [1,2,3]
console.log(a.includes(1))  // true
 
let a = [{"name": "xiaoming" },{"name": "xiaohong"}]
 
console.log(a.some(function(ele){
    return ele.name == 'xiaoming'
})) // true

19、findIndex() 方法findIndex()的作用同indexOf(),返回第一个满足条件的下标,并停止寻找。

区别是findIndex() 的参数为一个回调函数,且一般用于对象数组

let a = [1,2,3,4]
 
let b = a.findIndex(function(ele,index,array){
    return ele === 2
})
 
let c = a.indexOf(2)  
 
console.log(a)  // [1,2,3,4]
console.log(b)  // 1
console.log(c)  // 1

20、includes() 方法,返回一个布尔值。 参数是一个value,一般用于简单数组。

对于复杂数组,则可以使用some()方法替代includes()方法

let a = [1,2,3]
console.log(a.includes(1))  // true

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript数组的fill()方法用于将一个固定值替换数组的元素。fill()方法接受两个参数,第一个参数是要替换的值,第二个参数是开始替换的索引位置。如果只提供第一个参数,则会将整个数组的元素都替换为该值。 例如,引用\[1\]的演示程序展示了fill()方法的使用。在这个例子,我们创建了一个长度为5的数组a,并使用fill()方法将其所有元素都替换为1。然后,我们再次使用fill()方法,指定开始替换的索引位置为1,将数组的元素从索引1开始都替换为2。接着,我们再次使用fill()方法,指定开始替换的索引位置为3和结束索引位置为5,将数组的元素从索引3到索引5替换为3。最后,我们再次使用fill()方法,指定开始替换的索引位置为5和结束索引位置为10,将数组的元素从索引5到索引10替换为3。同时,我们还设置了数组的长度为10,再次使用fill()方法替换元素,结果会根据数组的长度进行调整。 引用\[2\]和\[3\]提供了更简单的示例。在这些示例,我们分别使用fill()方法数组的元素替换为一个数字和一个数组。在第一个示例,我们将数组arr3的所有元素都替换为数字123。在第二个示例,我们将数组arr3的所有元素都替换为一个包含一个元素的数组\[123\]。 总结来说,JavaScript数组fill()方法可以用来替换数组的元素,可以替换为一个固定值或者一个数组。 #### 引用[.reference_title] - *1* [JavaScript数组填充fill函数](https://blog.csdn.net/jifukui/article/details/108367815)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [javascript之fill()方法](https://blog.csdn.net/weixin_30730151/article/details/94783303)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值