前端面试题---js部分---

本文详细解析了JavaScript中数组的splice、slice和split三个方法的用法。splice用于添加或删除数组元素,会改变原数组;slice则用于截取数组并返回新数组,不改变原数组;split则是将字符串切割成数组。通过实例展示了它们的参数用法和返回值特点。

js— splice,slice,split 还在傻傻分不清吗?

一:splice:

splice 数组操作,从数组中添加或删除元素,返回新的数组(⚠️:会对原数组进行更改,获取的是新的数组)

1: splice删除元素

var arr = [2, 3, 4, 5, 6, 7];
console.log(arr.splice(1, 3)); // 3,4,5   // x<y  arr.splice(x,y) 从索引为x的开始截取y位 但当y>arr.length时,返回的是从索引为x到 arr.lenght-1(即剩下的所有)
console.log(arr)  // 2,6,7 splice 会改变原数组,返回的是经过splice处理后剩下的值


var arr2 = [2, 3, 4, 5, 6, 7];
console.log(arr2.splice(-2, 2));  // 6,7
// 第一个参数为负数时从数组右边往前边数,从-1开始
2: splice添加元素
var arr3 = ["a", "b", "c", "d", "e"];
console.log(arr3.splice(2, 1, 'w', 'z'));  // c  返回的是删除的元素
console.log(arr3) // ["a", "b", "w" , "z" , "d" , "e"]; //  原数组会被改变,会把添加的元素放到数组里,并且去掉删除的元素,

二:slice:
slice():用于截取数组,并返回截取到的新的数组,数组与字符串对象都使用(⚠️:对原数组不会改变)

var arr4 = [11, 12, 13, 14, 15, 16];
console.log(arr4.slice(2, 4));   // 包含从start到end(不包括该元素)的arrayObject中的元素。 // 当第二个参数大雨数组的长度-1时,返回的是剩下的所有
console.log(arr4)   // 原数组不被改变

var arr5 = [11, 12, 13, 14, 15, 16];
console.log("arr4", arr4.slice(2));  // 13,14,15,16  // 只有一个参数时,返回的是从索引开始的所有


var arr6 = [11, 12, 13, 14, 15, 16];
console.log("arr5", arr6.slice(-3, -1));  // [14,15]


var arr7 = [11, 12, 13, 14, 15, 16];
console.log("arr7", arr7.slice(-3, 3));   //[] 索引-3 和 3中间没有重叠元素


var arr8 = [11, 12, 13, 14, 15, 16];
console.log("arr8", arr8.slice(-3, 0)) // []  索引-3 和 0中间没有重叠元素

var arr9 = [11, 12, 13, 14, 15, 16];
console.log("arr9", arr9.slice(1, -2)) // [12,13,14] 从索引 1开始到索引1为-2结束,不包括-2

三: split 切割字符串为数组

var str = 'a,b,c,d';
var arr10 = str.split(',')//使用''空格切割字符串
console.log(arr10)//['a','b','c','d'];
### React 前端开发面试题整理 #### 关于 React 模块的面试题 React 是现代前端开发中不可或缺的一部分,掌握其核心概念对于开发者至关重要。以下是几个精选的 React 面试题- **什么是 JSX?** JSX 是 JavaScript XML 的缩写,允许在 JavaScript 中编写看起来像 HTML 的语法[^1]。 - **解释 React 生命周期方法及其用途:** 在 React 16.8 版本之前,基于类的组件通过生命周期方法管理组件的行为。`componentDidMount()` 方法用于组件挂载后的操作;而 `shouldComponentUpdate()` 则决定组件是否应该重新渲染[^3]。 ```javascript class MyComponent extends React.Component { componentDidMount() { console.log('Component has mounted'); } shouldComponentUpdate(nextProps, nextState) { return this.state.count !== nextState.count; } } ``` - **如何处理事件绑定?** 由于 React 实现了自己的事件系统,因此标准 DOM API 如 `event.stopPropagation()` 可能不会按预期工作。为了阻止事件传播,在 React 中应当使用合成事件对象的方法[^2]。 ```jsx handleClick(event) { event.nativeEvent.stopImmediatePropagation(); } <button onClick={this.handleClick}>点击</button> ``` #### Hooks 和函数式组件的重要性 自 React 16.8 发布以来,Hooks 成为构建可重用逻辑的新方式。它们使得无需编写复杂的高阶组件或 render props 即可在函数组件内使用 state 和其他特性。 ```javascript import { useState } from 'react'; function Counter() { const [count, setCount] = useState(0); return ( <div> <p>当前计数: {count}</p> <button onClick={() => setCount(count + 1)}>增加</button> </div> ); } ``` #### 性能优化技巧 了解何时以及如何优化 React 应用程序性能也是重要的技能之一。例如,合理运用 `useMemo`, `useCallback` 或者 `React.memo` 来避免不必要的计算和渲染更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值