如何修改数组指定索引位置的元素?
解决数组指定索引元素修改的问题
嘿,我看你想要实现一个能把数组指定index位置元素改成给定value的函数,现在的代码还没达到预期效果,我来帮你调整下~
首先看你当前的代码:
changeElement = (arr, index, value) => { arr.splice(1, 1, 'HEY'); }
这里的问题是你硬写了splice的参数:固定替换索引1的元素为'HEY',完全没用到函数接收的index和value参数,所以不管你传什么索引和值,都会只改数组第2个元素(数组索引从0开始)成固定字符串。
两种更合适的实现方式:
直接赋值(最简便):数组是引用类型,直接通过索引赋值是最直接的方式,性能也更好,还可以加个索引合法性判断避免报错:
const changeElement = (arr, index, value) => { if (index >= 0 && index < arr.length) { arr[index] = value; } else { console.warn('索引超出数组范围啦'); } };用splice实现:如果你一定要用
splice,那得把传入的参数用上——splice的第一个参数是要操作的起始索引,第二个是要删除的元素个数,第三个及以后是要插入的元素:const changeElement = (arr, index, value) => { if (index >= 0 && index < arr.length) { arr.splice(index, 1, value); } else { console.warn('索引超出数组范围啦'); } };
测试例子:
比如你调用:
const testArr = [1,2,3]; changeElement(testArr, 1, 'HEY'); console.log(testArr); // 输出 [1, 'HEY', 3]
这样就会正确把索引1的元素改成'HEY'啦。
内容的提问来源于stack exchange,提问作者batman091716
相关产品推荐
相关产品推荐

