4-3请老师检查,,老师题目中有提到直接在原数组上进行操作是什么意思,那不在原数组上操作是什么样的一个状态 我代码写的有问题吗吗

4-3请老师检查,,老师题目中有提到直接在原数组上进行操作是什么意思,那不在原数组上操作是什么样的一个状态 我代码写的有问题吗吗

<!DOCTYPE html><html lang="en">
<head>    <meta charset="UTF-8">    <title>数组</title></head>
<body>    <script>        var arr = ["有效", "无效", "有效", "无效", "无效", "有效"];
        // 遍历for循环        for (var i = 0; i < arr.length; i++) {            // 如果数组元素等于 '无效',就使用splice()删除指定元素            if (arr[i] == '无效') {                // 删除下标为i 长度为1的数组元素                arr.splice(i, 1);                // 由于元素删除之后,索引位置会变,所以需要手动矫正下标                i--;            }        }        console.log(arr);    </script></body>
</html>

搜索

复制

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
imooc_慕慕 2022-06-27 09:23:08

同学你好,代码效果正确;针对于原数组,我们可以举个例子:

pop()方法从数组中删除最后一个元素并返回该元素,这个方法改变了原来的数组长度;改变原数组;


var str = [1,2,3,4,5]

var str= str.pop();

console.log(str)

返回的结果为:[1,2,3,4];

如果想在再删除一个元素,还是用的原来的数组;

str.pop();

console.log(str)此时的数组为[1,2,3]

原数组又改变了;所以可以说是在原数组上操作;


concat();连接数组,返回新的数组;不改变原数组;


var arr = [1,2];

var arrNew = arr.concat([3,4]);

console.log(arr)  

返回数组[1,2];  还是原来的数组,没有变化;如果想再拼接新的数组;

是不是需要从上一步拼接好的新数组去拼接;


arrNew.concat([5,6]);

console.log(arrNew.concat([5,6]))

返回[1, 2, 3, 4, 5, 6]

由此可见,这个方法就不能在原来的数组上进行操作;

通过比较可以看出,pop()方法可以在原数组上进行操作;即当数组方法改变原数组的时候,

可以在原数组上进行操作的;如果数组方法不改变原数组,就需要在得到的最新数组上进行操作;

即不可以在原数组上进行操作;

祝学习愉快~


  • 提问者 清夏_ #1
    就是说有的方法可以直接改变原数组 比如pop push这些 也可以换一种说法 直接在原数组上操作? 因为本来就会改变原数组的值 可以这么理解吗老师
    2022-06-27 09:45:38
  • 提问者 清夏_ #2
    就是说 如果使用的方法不能改变原数组的状态 就需要另外定义变量来输出了 也就不存在在原数组操作这种话了 是不是老师? 题中使用的方法是会改变原数组的值的 所以才让直接在原数组基础上操作
    2022-06-27 09:53:33
  • imooc_慕慕 回复 提问者 清夏_ #3

    同学你好,可以这样理解,祝学习愉快~

    2022-06-27 10:15:14
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师