JS中some()和every()和join()和concat()和pop(),push(),shift(),unshfit()和map()和filter()

本文详细介绍了JavaScript中的数组方法,包括some()和every()用于检查数组元素条件,join()用于组合数组元素为字符串,concat()用于合并数组,pop()和push()用于修改数组长度,map()用于映射数组元素,filter()用于过滤数组元素等。

一、Array

1、some()和every()

some()是对数组中每一项运行指定函数,如果该函数对任一项返回true,则返回true。

every()是对数组中的每一项运行给定函数,如果该函数对每一项返回true,则返回true。

var array = [1,3,5,7,9,11,13,15,17]
undefined
array.some(function(item,index){
    return item>9
})
//true

返回 true

var array = [1,3,5,7,9,11,13,15,17]
undefined
array.every(function(item,index){
    return item>9
})
//false

返回 false

 

2、join()

join() 方法用于把数组中的所有元素放入一个字符串。

var arr =[4,5,34,3453,3453,33,"哈哈哈哈"];
var arr2 = arr.join("");
console.log(arr2);
console.log(typeof(arr2)); //string
console.log(typeof(arr));   //object
//45343453345333哈哈哈哈
//string
//object

 输出:

//45343453345333哈哈哈哈
//string
//object

 

3、concat()

连接2个以及更多的数组,返回一个新数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。

var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
 
var arr2 = new Array(3)
arr2[0] = "James"
arr2[1] = "Adrew"

var array3 = arr.concat(arr2);
console.log(array3);
console.log(arr);
console.log(arr2);

输出:

(6) ["George", "John", "Thomas", "James", "Adrew", empty]
(3) ["George", "John", "Thomas"]
(3) ["James", "Adrew", empty]

 

4、pop()和push()和shift()和unshift()

会改变数组的本身的长度及内容。

不同的是 push()、pop() 是从数组的尾部进行增减unshift()、shift() 是从数组的头部进行增减

(1)push()是对尾部添加若干元素,unshift()是对头部添加若干元素,返回数组新长度

var arr = [1, 2];
arr.push(3,4);
console.log(arr);   //[1,2,3,4]

arr.unshift(0,0.5);  
console.log(arr);  //[0,0.5,1,2,3,4]

(2)pop()从数组的尾部删除1个元素(删且只删除1个),并返回 被删除的元素;空数组是继续删除,不报错,但返回undefined;而shift()是对头部删除1个元素(只删除1个)。。。

//接上面数组arr
arr.pop()   //返回4
console.log(arr);  //[0, 0.5, 1, 2, 3]

arr.shift() //返回0
console.log(arr) //[0.5,1,2,3]

 

5、map()

map“映射”,也就是原数组被“映射”成对应新数组。

var data = [1, 2, 3, 4];
var array = data.map(function (item) {
  return item * item;
});
console.log(array) //[1,4,9,16]

输出:[1,4,9,16]

var users = [
  {name: "张含韵", "email": "zhang@email.com","age":"18"},
  {name: "江一燕",   "email": "jiang@email.com","age":"34"},
  {name: "李小璐",  "email": "li@email.com","age":"28"}
];

var emailsAge = users.map(function (item) { return {email:item.email,age:item.age}});

输出

[{email: "zhang@email.com", age: "18"},{email: "jiang@email.com", age: "34"},{email: "li@email.com", age: "28"}]

 

6、filter()

filter()方法用于把Array的某些元素过滤掉,然后返回剩下的元素,并创建一个包含所有通过测试的元素的新数组。
function isBigEnough(element) {
     return element >= 10;
 }
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough); 
console.log(filtered);//[ 12, 130, 44 ]

输出:[12,130,44]

功能(1):一个Array中,删掉偶数,只保留奇数

var arr = [1, 2, 4, 5, 6, 9, 10, 15];
var num = arr.filter(function (x) {
     return x % 2 !== 0;
});
console.log(num) //[1,5,9,15]

功能(2):把Array中的空字符串删掉

 var arr = ['A', '', 'B', null, undefined, 'C', '  '];
 var string = arr.filter(function (s) {
     return s && s.trim(); // 注意:IE9以下的版本没有trim()方法
 });
 console.log(string); // ['A', 'B', 'C']

功能(3):可以巧妙地去除Array的重复元素,

注意:去除重复元素依靠的是indexOf总是返回第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了。

var  r, arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
r = arr.filter(function (element, index, self) {
    return self.indexOf(element) === index;
});
console.log(r.toString()); //apple,strawberry,banana,pear,orange

 

转载于:https://www.cnblogs.com/chengxs/p/9256570.html

<think>首先,用户的问题是:“我想了解JavaScript数组的常用方法及其使用示例 请问JavaScript数组常用方法及示例代码”。这基于系统级指令,我需要用中文回答,并遵循格式要求。 系统级指令: - 行内数学表达式用 $...$(但这里可能不涉及数学)。 - 独立公式用 $$...$$(同样,可能不适用)。 - LaTeX语法正确(确保代码正确)。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,如 [^1]。 - 回答结构清晰,逐步解决问题。 - 参考站内引用:提供了四个引用 [^1], [^2], [^3], [^4],这些是参考资料。 用户可见层: - 回答结构清晰,帮助用户逐步解决问题。 - 保证回答真实可靠。 引用内容: - [^1]: JS数组常用方法总结,包括19个方法,如push()。 - [^2]: JavaScript数组方法42个,包括at(), flat()等。 - [^3]: JavaScript数组常用方法解析,包括Array.of(), Array.from()。 - [^4]: JavaScript数组常用方法及示例代码总结,包括isArray(), at()等。 我需要整合这些信息,提供一个全面的回答,覆盖JavaScript数组的常用方法,并给出示例代码。由于用户指定了“常用方法”,我应该聚焦在核心常用的方法上,而不是所有42个。 常见的JavaScript数组方法包括: - 改变原数组的方法:push(), pop(), shift(), unshift(), splice(), sort(), reverse()。 - 不改变原数组的方法:concat(), slice(), join(), indexOf(), lastIndexOf(), includes(), forEach(), map(), filter(), reduce(), some(), every() 等。 - ES6新增方法:find(), findIndex(), fill(), flat(), flatMap(), Array.from(), Array.of(), includes() 等。 结构回答: 1. **引言**:简要介绍JavaScript数组常用方法的重要性。 2. **分类方法**:将方法分组,如修改数组的方法、访问方法、迭代方法等。 3. **每个方法详解**:对于每个常用方法,提供: - 方法描述。 - 语法。 - 示例代码。 4. **总结**:概括关键点。 5. **相关问题**:生成相关问题。 由于引用提供了具体方法,我应该基于引用列出方法: - 从 [^1]: 19个方法,包括push(), pop(), shift(), unshift(), sort(), reverse(), concat(), slice(), splice(), indexOf(), lastIndexOf(), forEach(), map(), filter(), reduce(), some(), every(), join(), toString()。 - [^2]: 42个方法,但包括一些新的如at(), flat()。 - [^3]: 包括Array.of(), Array.from()。 - [^4]: 包括isArray(), at(), concat(), indexOf(), lastIndexOf(), join(), slice(), push(), pop(), unshift(), shift(), splice(), reverse(), sort(), forEach(), filter(), map(), reduce()。 为了简洁,聚焦在20-30个最常用的方法。参考用户需求,是“常用方法”,所以选择核心方法。 最终方法列表(基于常见性引用): 1. push() 2. pop() 3. shift() 4. unshift() 5. splice() 6. slice() 7. concat() 8. join() 9. reverse() 10. sort() 11. indexOf() 12. lastIndexOf() 13. includes() (ES6) 14. forEach() 15. map() 16. filter() 17. reduce() 18. some() 19. every() 20. find() (ES6) 21. findIndex() (ES6) 22. fill() (ES6) 23. flat() (ES6) 24. flatMap() (ES6) 25. Array.isArray() 26. Array.from() (ES6) 27. Array.of() (ES6) 28. at() (ES6) 这有28个,可能太多。我可以分组介绍。 回答结构: - **步骤1: 介绍JavaScript数组**:解释数组是什么,为什么方法重要。 - **步骤2: 分类方法**: - 修改数组的方法(改变原数组)。 - 访问查询方法。 - 迭代方法。 - 其他方法(如ES6新增)。 - **步骤3: 每个方法示例**:提供简短代码示例。 - **步骤4: 总结**。 - **步骤5: 相关问题**。 在回答中,自然地添加引用标识。例如,当提到某个方法时,如果引用中有覆盖,加 [^1], [^2] 等。 示例代码:使用代码块,如示例中的Python代码,但这里是JavaScript。 生成相关问题:在最后,像示例一样,添加“相关问题”部分。 确保语言:全部用中文。</think>### JavaScript数组常用方法及示例代码总结 JavaScript数组是存储有序数据集合的核心数据结构,提供了丰富的方法来操作数据。这些方法可以分为几类:修改数组的方法(会改变原数组)、访问方法(不改变原数组)、迭代方法等。以下我将基于常用性实用性,分类介绍20个最常用的方法,并附上清晰的示例代码。内容整合自可靠参考资源,确保真实性准确性[^1][^2][^3][^4]。 #### 1. 修改数组的方法(会改变原数组) 这些方法直接修改调用它们的数组。 - **push()**: 在数组末尾添加一个或多个元素,返回新长度。 示例代码: ```javascript let arr = [1, 2, 3]; arr.push(4); // arr 变为 [1, 2, 3, 4] console.log(arr); // 输出: [1, 2, 3, 4] ``` - **pop()**: 移除数组最后一个元素,返回被移除的元素。 示例代码: ```javascript let arr = [1, 2, 3]; let last = arr.pop(); // last 为 3, arr 变为 [1, 2] console.log(arr); // 输出: [1, 2] ``` - **shift()**: 移除数组第一个元素,返回被移除的元素。 示例代码: ```javascript let arr = [1, 2, 3]; let first = arr.shift(); // first 为 1, arr 变为 [2, 3] console.log(arr); // 输出: [2, 3] ``` - **unshift()**: 在数组开头添加一个或多个元素,返回新长度。 示例代码: ```javascript let arr = [1, 2, 3]; arr.unshift(0); // arr 变为 [0, 1, 2, 3] console.log(arr); // 输出: [0, 1, 2, 3] ``` - **splice()**: 添加或删除元素(指定位置),返回被删除元素的数组。 示例代码: ```javascript let arr = [1, 2, 3, 4]; arr.splice(1, 2, 'a', 'b'); // 从索引1开始删除2个元素,添加'a''b' console.log(arr); // 输出: [1, 'a', 'b', 4] ``` - **reverse()**: 反转数组顺序。 示例代码: ```javascript let arr = [1, 2, 3]; arr.reverse(); // arr 变为 [3, 2, 1] console.log(arr); // 输出: [3, 2, 1] ``` - **sort()**: 对数组元素排序(默认按Unicode码点),可传入比较函数。 示例代码: ```javascript let arr = [3, 1, 4, 2]; arr.sort(); // 默认排序: [1, 2, 3, 4] arr.sort((a, b) => b - a); // 降序排序: [4, 3, 2, 1] console.log(arr); // 输出: [4, 3, 2, 1] ``` - **fill()** (ES6): 用固定值填充数组的指定范围。 示例代码: ```javascript let arr = [1, 2, 3, 4]; arr.fill(0, 1, 3); // 从索引1到3填充0 console.log(arr); // 输出: [1, 0, 0, 4] ``` #### 2. 访问查询方法(不改变原数组) 这些方法返回新数组或查询结果,不修改原数组。 - **concat()**: 合并多个数组,返回新数组。 示例代码: ```javascript let arr1 = [1, 2]; let arr2 = [3, 4]; let newArr = arr1.concat(arr2); // newArr 为 [1, 2, 3, 4] console.log(newArr); // 输出: [1, 2, 3, 4] ``` - **slice()**: 返回数组的浅拷贝部分(指定起始结束索引)。 示例代码: ```javascript let arr = [1, 2, 3, 4]; let subArr = arr.slice(1, 3); // 从索引1到3(不包括3) console.log(subArr); // 输出: [2, 3] ``` - **join()**: 将数组元素连接成字符串,使用指定分隔符。 示例代码: ```javascript let arr = ['a', 'b', 'c']; let str = arr.join('-'); // str 为 "a-b-c" console.log(str); // 输出: "a-b-c" ``` - **indexOf()**: 返回元素首次出现的索引,未找到返回-1。 示例代码: ```javascript let arr = [1, 2, 3, 2]; let index = arr.indexOf(2); // index 为 1 console.log(index); // 输出: 1 ``` - **lastIndexOf()**: 返回元素最后一次出现的索引。 示例代码: ```javascript let arr = [1, 2, 3, 2]; let lastIndex = arr.lastIndexOf(2); // lastIndex 为 3 console.log(lastIndex); // 输出: 3 ``` - **includes()** (ES6): 检查数组是否包含某元素,返回布尔值。 示例代码: ```javascript let arr = [1, 2, 3]; let hasTwo = arr.includes(2); // true console.log(hasTwo); // 输出: true ``` - **at()** (ES6): 返回指定索引的元素(支持负索引)。 示例代码: ```javascript let arr = [10, 20, 30]; let elem = arr.at(-1); // 索引-1表示最后一个元素 console.log(elem); // 输出: 30 ``` - **Array.isArray()**: 检查值是否为数组,返回布尔值。 示例代码: ```javascript let arr = [1, 2, 3]; let isArr = Array.isArray(arr); // true console.log(isArr); // 输出: true ``` #### 3. 迭代方法(不改变原数组) 这些方法用于遍历或处理数组元素。 - **forEach()**: 遍历数组,对每个元素执行函数。 示例代码: ```javascript let arr = [1, 2, 3]; arr.forEach(item => console.log(item * 2)); // 输出: 2, 4, 6 ``` - **map()**: 创建新数组,包含原数组每个元素调用函数的结果。 示例代码: ```javascript let arr = [1, 2, 3]; let doubled = arr.map(num => num * 2); // doubled 为 [2, 4, 6] console.log(doubled); // 输出: [2, 4, 6] ``` - **filter()**: 创建新数组,包含通过测试函数的元素。 示例代码: ```javascript let arr = [1, 2, 3, 4]; let evens = arr.filter(num => num % 2 === 0); // evens 为 [2, 4] console.log(evens); // 输出: [2, 4] ``` - **reduce()**: 对数组元素执行累加器函数,返回单个值。 示例代码: ```javascript let arr = [1, 2, 3, 4]; let sum = arr.reduce((acc, curr) => acc + curr, 0); // sum 为 10 console.log(sum); // 输出: 10 ``` - **find()** (ES6): 返回第一个满足测试函数的元素,未找到返回undefined。 示例代码: ```javascript let arr = [5, 12, 8, 130]; let found = arr.find(item => item > 10); // found 为 12 console.log(found); // 输出: 12 ``` - **some()**: 检查是否至少有一个元素满足测试函数,返回布尔值。 示例代码: ```javascript let arr = [1, 2, 3]; let hasEven = arr.some(num => num % 2 === 0); // true console.log(hasEven); // 输出: true ``` - **every()**: 检查所有元素是否满足测试函数,返回布尔值。 示例代码: ```javascript let arr = [2, 4, 6]; let allEven = arr.every(num => num % 2 === 0); // true console.log(allEven); // 输出: true ``` #### 4. 其他常用方法(ES6新增) - **flat()**: 将嵌套数组“拉平”为一维数组(可指定深度)。 示例代码: ```javascript let arr = [1, [2, [3, [4]]]]; let flatArr = arr.flat(2); // 拉平两层: [1, 2, 3, [4]] console.log(flatArr); // 输出: [1, 2, 3, [4]] ``` - **Array.from()**: 将类数组对象或可迭代对象转换为数组。 示例代码: ```javascript let str = 'hello'; let arr = Array.from(str); // arr 为 ['h', 'e', 'l', 'l', 'o'] console.log(arr); // 输出: ['h', 'e', 'l', 'l', 'o'] ``` - **Array.of()**: 创建一个包含任意数量参数的新数组。 示例代码: ```javascript let arr = Array.of(1, 2, 3); // arr 为 [1, 2, 3] console.log(arr); // 输出: [1, 2, 3] ``` ### 总结 JavaScript数组方法极大提升了数据操作的效率。核心要点: - 修改方法(如 `push()`, `splice()`)会改变原数组,需谨慎使用。 - 访问迭代方法(如 `map()`, `filter()`)返回新数据,适合函数式编程。 - ES6新增方法(如 `flat()`, `Array.from()`)增强了现代开发能力。 掌握这些方法能优化代码性能,减少错误[^1][^2][^3][^4]。建议在实际项目中多练习,以加深理解。 ### 相关问题 1. 如何优化JavaScript数组操作的性能? 2. ES6新增的数组方法有哪些实际应用场景? 3. JavaScript数组方法与函数式编程有何关联?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值