es6下的高级函数

本文介绍了ES6中的高级函数用法,包括filter用于筛选数组元素,map用于对数组元素进行操作并返回新数组,reduce用于对数组进行累积计算。此外,还讲解了如何通过split筛选数组,去除空值以及实现数组去重。同时,探讨了对象操作,如使用Object.keys获取对象的key,Object.values获取对象的value,以及indexOf查找字符串在数组中的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

flter函数 返回一个新的数组 每次会根据条件进行一次判断 支返回为true的一项 。
map函数 对数组的每一项进行操作 返回每一项的数组。
数组对象可以直接取出自己想要的对象

let arr = [{
        id: 1,
        name: "tony",
        class: 1,
        garde: 88
   },{
        id: 2,
        name: "Tom",
        class: 1,
        grade: 90
   },{
        id: 3,
        name: "Jack",
        class: 1,
        grade: 86
   }];
let res = arr.map(({name, id}) => ({ id, name }))
 console.log(res)

reduce 第一参数是上次返回的值 第二个参数是这一次使用的值。
split 筛选数组 arr.splilt(’-’,3);参数二是返回数组的前三项。
去掉空数组空字符串、undefined、null

var newArr = arr.filter(item => item)

数组去重

var arr = [1, 2, 2, 3, 4, 5, 5, 6, 7, 7,8,8,0,8,6,3,4,56,2];
var arr2 = arr.filter((x, index,self)=>self.indexOf(x)===index)  
console.log(arr2); //[1, 2, 3, 4, 5, 6, 7, 8, 0, 56]

//此处的self其实就是arr原数组

对象
Object.keys(arr);可以获取对象的key
Object.values(arr);可以获取对象的value值
indexOf返回某个指定的字符串值在字符串中首次出现的位置。

const arr = [1,2,3,4,5,6,7]
const list = [
    {openId: 1, timelineId: 1, showNo: 1, uid: 1},
    {openId: 2, timelineId: 1, showNo: 1, uid: 1},
    {openId: 9, timelineId: 1, showNo: 1, uid: 1},
    {openId: 4, timelineId: 1, showNo: 1, uid: 1},
    {openId: 5, timelineId: 1, showNo: 1, uid: 1}
]
const params = list.filter(item=> arr.indexOf(item.openId) > -1)
console.log(params)
<think>首先,用户查询是关于ES6中常用的函数或方法总结。我需要基于提供的引用内容来构建回答,因为系统指令要求参考站内引用。这些引用来自[^1]、[^2]、[^3]和[^4],内容涉及ES6的各种特性,如模板字符串、对象简写、箭头函数、数组方法等。 回顾引用: - 引用[^1]:讨论了模板字符串、声明对象简写、对象拓展运算符和箭头函数。 - 引用[^2]:提到了flat()方法用于数组扁平化。 - 引用[^3]:比较了indexOf()和findIndex()方法。 - 引用[^4]:涵盖了Array.of()、find()和Array.from()方法。 我的回答需要结构化清晰,逐步解释ES6的常用函数和方法。系统指令还要求: - 使用中文回答。 - 行内数学表达式用$...$,但这里可能不涉及数学,所以可能不需要。 - 独立公式用$$...$$,但同样可能不适用。 - 生成相关问题。 - 在回答末尾自然地添加引用标识。 - 回答结构清晰,帮助用户逐步解决问题。 结构化回答: 1. **引言**:简要介绍ES6及其重要性。 2. **核心内容**:分类总结ES6常用函数和方法,基于引用。 - 字符串相关:模板字符串。 - 对象相关:声明对象简写、对象拓展运算符。 - 函数相关:箭头函数。 - 数组相关:flat()、find()、findIndex()、Array.of()、Array.from()等。 3. **示例**:提供代码示例来演示用法,就像示例中的Python代码那样。 4. **总结**:简要重申关键点。 5. **相关问题**:生成2-3个相关问题。 6. **引用**:在结尾添加引用标识。 确保内容真实可靠:基于提供的引用,不添加外部知识。 生成相关问题: - 基于内容,例如: 1. ES6中箭头函数与传统函数的区别是什么? 2. 如何使用ES6方法处理数组扁平化? 3. ES6的模板字符串有哪些高级用法? 最后,添加引用标识:[^1][^2][^3][^4] 现在,构建回答大纲: - **开头**:回答用户查询。 - **分类总结**: - 字符串方法:模板字符串。 - 对象方法:简写声明、拓展运算符。 - 函数方法:箭头函数。 - 数组方法:flat(), find(), findIndex(), Array.of(), Array.from()。 - **示例**:为每个方法提供简短代码示例。 - **结尾**:总结并生成相关问题。</think>### ES6常用函数和方法总结 ES6(ECMAScript 2015)引入了许多强大的函数和方法,显著提升了JavaScript的开发效率。基于站内引用内容,我将ES6常用函数和方法分为字符串、对象、函数和数组四大类,逐步解释其语法、用途和示例。所有方法均基于真实可靠的引用来源,确保内容准确。 #### 1. **字符串相关方法** ES6增强了字符串处理能力,主要通过模板字符串实现。 - **模板字符串**:使用反引号 `` ` `` 定义,支持多行文本、嵌入变量和表达式。 - **语法**:`${变量或表达式}`,变量名或表达式写在花括号内。 - **用途**:简化字符串拼接,支持动态内容。 - **示例**: ```javascript let name = "Alice"; let age = 25; // 嵌入变量 let info = `我的名字是${name}, 我的年纪是${age}`; // 输出: "我的名字是Alice, 我的年纪是25" // 嵌入函数调用 function greet() { return "Hello"; } let d = `自我介绍${greet()}`; // 输出: "自我介绍Hello" ``` 引用说明:模板字符串允许在字符串中直接插入变量和函数,避免了传统拼接的繁琐[^1]。 #### 2. **对象相关方法** ES6简化了对象操作,包括声明简写和拓展运算符。 - **声明对象简写**:当属性名和变量名相同时,可直接赋值。 - **语法**:`const obj = { key }`,省略重复的键值对。 - **用途**:减少冗余代码,提升可读性。 - **示例**: ```javascript const name = "Bob"; const age = 30; // 简写声明对象 const person = { name, age }; // 等价于 { name: name, age: age } console.log(person); // 输出: { name: "Bob", age: 30 } ``` 引用说明:这种简写方式在定义对象时更高效,尤其适用于数据组装场景[^1]。 - **对象拓展运算符**:使用 `{ ... }` 复制或合并对象。 - **语法**:`let newObj = { ...obj1, ...obj2 }`。 - **用途**:浅拷贝对象属性,支持对象合并。 - **示例**: ```javascript const obj1 = { a: 1 }; const obj2 = { b: 2 }; // 合并对象 const merged = { ...obj1, ...obj2 }; // 输出: { a: 1, b: 2 } ``` 引用说明:拓展运算符提取所有可遍历属性,适用于对象克隆和组合[^1]。 #### 3. **函数相关方法** ES6引入了箭头函数,优化了函数定义。 - **箭头函数**:提供简洁的函数语法。 - **语法**:`(参数) => 表达式` 或 `(参数) => { 代码块 }`。 - 无参数或多个参数时用 `( )` 包裹。 - 单行表达式可省略 `{ }`,自动返回结果;多行需用 `{ }`。 - **用途**:简化回调函数,避免 `this` 绑定问题。 - **示例**: ```javascript // 单行箭头函数(省略 { }) const add = (a, b) => a + b; console.log(add(2, 3)); // 输出: 5 // 多行箭头函数(使用 { }) const greet = (name) => { const message = `Hello, ${name}!`; return message; }; console.log(greet("Tom")); // 输出: "Hello, Tom!" ``` 引用说明:箭头函数让代码更简洁,特别适合数组遍历和事件处理[^1]。 #### 4. **数组相关方法** ES6新增了多个数组方法,提升数据处理能力。 - **flat()**:扁平化嵌套数组。 - **语法**:`arr.flat(depth)`,`depth` 指定扁平层级,`Infinity` 表示完全扁平。 - **用途**:处理多维数组,去除空位。 - **示例**: ```javascript const arr = [1, 2, [3, [4, 5]]]; const flatArr = arr.flat(Infinity); // 完全扁平化 console.log(flatArr); // 输出: [1, 2, 3, 4, 5] ``` 引用说明:`flat()` 方法跳过空位,简化了数组结构处理[^2]。 - **find()**:查找满足条件的第一个元素。 - **语法**:`arr.find(callback)`,回调函数返回布尔值。 - **用途**:替代传统循环,快速定位元素。 - **示例**: ```javascript const numbers = [10, 20, 30]; const result = numbers.find(num => num > 15); console.log(result); // 输出: 20 ``` 引用说明:`find()` 返回第一个匹配值,未找到则返回 `undefined`[^4]。 - **findIndex()**:查找满足条件的第一个元素索引。 - **语法**:`arr.findIndex(callback)`。 - **用途**:比 `indexOf()` 更灵活,支持复杂条件。 - **示例**: ```javascript const data = [{ id: 1 }, { id: 2 }]; const index = data.findIndex(item => item.id === 2); console.log(index); // 输出: 1 ``` 引用说明:`findIndex()` 允许回调函数定义条件,适用于对象数组搜索[^3]。 - **Array.of()**:创建数组,避免参数歧义。 - **语法**:`Array.of(values...)`。 - **用途**:将一组值转为数组,参数数量决定数组长度。 - **示例**: ```javascript const arr = Array.of(1, 2, 3); // 输出: [1, 2, 3] const empty = Array.of(); // 输出: [](空数组) ``` 引用说明:`Array.of()` 解决了 `new Array()` 的行为不一致问题[^4]。 - **Array.from()**:将类数组对象转为真正数组。 - **语法**:`Array.from(arrayLike)`。 - **用途**:处理 DOM 集合或参数对象。 - **示例**: ```javascript const json = { '0': 'a', '1': 'b', length: 2 }; const realArray = Array.from(json); // 输出: ["a", "b"] ``` 引用说明:`Array.from()` 支持可遍历对象转换,增强数据兼容性[^4]。 #### 总结 ES6的这些函数和方法(如模板字符串、箭头函数、flat() 和 findIndex())显著提升了代码简洁性和功能性。它们广泛应用于前端开发、数据处理和API交互中,例如在React或Vue项目中简化状态管理[^1][^2][^3][^4]。建议在实际编码中结合场景选择合适方法,以优化性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值