es6 引用数组,数组发生改变 (es6 引用类型的数据引用的时候怎么不改变原始数据)

48 篇文章 1 订阅
18 篇文章 1 订阅

 

 

vue项目 ,定义了一个变量,然后 this.requirements 和 this.showRequirements 都赋值为 requ ,在 this.requirements 发生改变

之后, this.showRequirements 也发生了改变 。但是我并不想它改变 。

为什么会改变呢?因为数组是引用类型的数据,所以,当指向为同一个指针的时候,改变这个数组的值会影响到另一个指针所指代的值(即同步)。

我这里用的是es6的语法,可以复制一个数组比如:this.requirements = [...requ] ,复制数组,原始数组不会改变 。 

科普一下:基本类型的数据,引用的时候数据不会发生变化,引用类型的数据,引用的时候原始数据会发生变化。

基本类型:number ,string, 布尔值,undefined,null

引用类型:对象,数组,除了基本类型的都是引用类型

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ES6中的数组filter()方法用于从数组中筛选出符合条件的元素,并将这些元素以一个新的数组形式返回。它接收一个回调函数作为参数,该回调函数用于检查数组中的每个元素是否符合条件。 filter()方法的语法如下: ``` array.filter(callback[, thisArg]) ``` 其中,callback是一个函数,它可以接收三个参数: - currentValue:当前元素的。 - index(可选):当前元素在数组中的下标。 - array(可选):当前数组对象。 此外,filter()方法还可以接收一个可选的thisArg参数,用于指定callback函数中this关键字的。 下面是一个示例代码,演示如何使用filter()方法从数组中筛选出所有大于等于10的元素: ``` const numbers = [2, 5, 8, 10, 15, 20]; const filteredNumbers = numbers.filter(function(number) { return number >= 10; }); console.log(filteredNumbers); // [10, 15, 20] ``` 在上面的代码中,我们定义了一个名为numbers的数组,然后使用filter()方法从该数组中筛选出所有大于等于10的元素,并将这些元素存储在一个名为filteredNumbers的新数组中。最后,我们使用console.log()方法输出filteredNumbers数组的内容,以验证过滤操作是否成功。 ### 回答2: ES6中的数组filter()是一种用于遍历数组并根据指定条件筛选出符合条件的元素的方法。 filter()方法通过传入一个函数作为参数来实现筛选功能。该函数接受当前被遍历的数组元素作为参数,并返回一个布尔。返回true的元素将被保留在新的数组中,而返回false的元素将被过滤掉。 下面是一个示例: ```javascript const numbers = [1, 2, 3, 4, 5]; // 使用filter()方法筛选出所有大于2的数字 const filteredNumbers = numbers.filter(number => number > 2); console.log(filteredNumbers); // 输出 [3, 4, 5] ``` 在上面的例子中,原始数组numbers有5个元素。通过使用filter()方法,并传入一个箭头函数作为参数,我们筛选出所有大于2的数字。最终,被保留下来的数字被存储在新的数组filteredNumbers中,并通过打印输出。 filter()方法不会改变原始数组,而是返回一个新的数组,其中包含符合条件的元素。因此,我们可以将其结果赋给一个新的变量。 除了箭头函数,我们还可以将一个名为predicate(断言)的普通函数作为filter()方法的参数。例如: ```javascript const numbers = [1, 2, 3, 4, 5]; // 所有能被2整除的数字 function isEven(number) { return number % 2 === 0; } const evenNumbers = numbers.filter(isEven); console.log(evenNumbers); // 输出 [2, 4] ``` 在这个例子中,我们定义了一个名为isEven()的函数,用于判断一个数字是否为偶数。然后,我们通过传递isEven函数作为参数给filter()方法来筛选出所有偶数。最终,结果存储在变量evenNumbers中并通过打印输出。 总结来说,ES6中的数组filter()方法提供了一种便捷的方式来筛选出数组中符合条件的元素,使我们可以轻松地处理数组数据。 ### 回答3: ES6中的数组filter()方法可以根据指定的条件过滤数组中的元素并返回一个新的数组。filter()方法接收一个回调函数作为参数,该函数在对数组的每个元素进行遍历时被调用。 回调函数接收三个参数,分别是当前遍历的元素、元素的索引和原始数组。该回调函数返回一个布尔,如果返回为true,那么该元素就会被包含在最终的新数组中,否则会被过滤掉。 例如,我们有一个数组arr = [1, 2, 3, 4, 5],我们想要过滤出所有的偶数。我们可以使用filter()方法来实现这个功能: ``` const arr = [1, 2, 3, 4, 5]; const evenNumbers = arr.filter((num) => num % 2 === 0); console.log(evenNumbers); // 输出 [2, 4] ``` 在上述代码中,回调函数`(num) => num % 2 === 0`检查每个元素是否为偶数,如果是偶数,则返回true,否则返回false。filter()方法根据返回来决定是否将该元素添加到新数组evenNumbers中。 需要注意的是,filter()方法不改变原始数组,而是返回一个新的数组

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值