数组方法中的find,filter,map三种方法返回的对象,都与原数组里的元素保持联系
在响应式对象数组里用find方法,返回的数组里的对象,跟原数组里的对象是有联系的
代码如下:
const cartList=ref([])
//返回item作为对象元素与原数组里的对象具有联系
const item=cartList.value.find((item)=>{goods.skuId===item.skuId})
if(item){
// 已添加过
item.count+=1//修改原数组里对应对象里的属性
}
补充:
在 JavaScript 数组中使用一些常见的方法,如 filter()
、map()
、find()等,处理后的数组元素与原数组之间是有联系的。这是因为 JavaScript 中的数组是引用类型。
具体来说:
-
filter()
: 返回一个新数组,其中包含通过测试函数的所有元素。这个新数组与原数组元素是引用关系,意味着修改新数组中的元素,也会影响到原数组。 -
map()
: 返回一个新数组,其中每个元素都是对原数组中对应元素的函数调用结果。这个新数组与原数组元素是引用关系。
所以,当你使用这些数组方法时,要注意原数组与处理后的数组之间的引用关系。如果需要完全独立的新数组,可以考虑使用扩展运算符(...
)或 slice()
方法来创建一个全新的数组副本。
补充:下面是一些常见的 JavaScript 数组方法:
-
push()
:向数组末尾添加一个或多个元素,并返回新数组的长度。 -
pop()
:删除数组末尾的元素,并返回该元素的值。 -
shift()
:删除数组开头的元素,并返回该元素的值。 -
unshift()
:向数组开头添加一个或多个元素,并返回新数组的长度。 -
concat()
:连接两个或多个数组,并返回新数组。 -
slice()
:从数组中选择一个片段,并返回一个新数组。 -
splice()
:从数组中添加或删除元素,并返回被删除的元素。 -
indexOf()
:返回数组中指定元素的第一个索引,如果没有找到则返回 -1。 -
lastIndexOf()
:返回数组中指定元素的最后一个索引,如果没有找到则返回 -1。 -
forEach()
:对数组中的每个元素执行一次提供的函数。 -
map()
:对数组中的每个元素执行一次提供的函数,并返回一个新数组。 -
filter()
:对数组中的每个元素执行一次提供的函数,并返回一个新数组,其中包含测试函数返回 true 的所有元素。 -
reduce()
:对数组中的每个元素执行一次提供的函数,并返回一个累加器值。 -
some()
:对数组中的每个元素执行一次提供的函数,如果至少有一个元素满足测试函数,则返回 true,否则返回 false。 -
every()
:对数组中的每个元素执行一次提供的函数,如果所有元素都满足测试函数,则返回 true,否则返回 false。