vue3 數(shù)組間取消強(qiáng)關(guān)聯(lián)的幾種實(shí)現(xiàn)方法
在 Vue 3 中,如果你想要從一個數(shù)組中獲取數(shù)據(jù)并替換另一個數(shù)組中的數(shù)據(jù),但又不想讓這些數(shù)組之間存在強(qiáng)關(guān)聯(lián),你可以通過使用數(shù)組的拷貝、展開運(yùn)算符(spread operator)或使用數(shù)組的 slice() 方法來實(shí)現(xiàn)。這樣可以確保原始數(shù)據(jù)不被直接修改,從而避免了強(qiáng)關(guān)聯(lián)的問題。
方法 1:使用展開運(yùn)算符
const originalArray = [1, 2, 3]; const newArray = [...originalArray]; // 創(chuàng)建一個 originalArray 的淺拷貝 // 修改 newArray newArray[0] = 10; // originalArray 不受影響 console.log(originalArray); // 輸出: [1, 2, 3] console.log(newArray); // 輸出: [10, 2, 3]
方法 2:使用slice()方法
const originalArray = [1, 2, 3]; const newArray = originalArray.slice(); // 創(chuàng)建一個 originalArray 的淺拷貝 // 修改 newArray newArray[0] = 10; // originalArray 不受影響 console.log(originalArray); // 輸出: [1, 2, 3] console.log(newArray); // 輸出: [10, 2, 3]
方法 3:使用map()方法(如果需要更深層次的復(fù)制)
如果你需要更深層次的復(fù)制(例如,對象或數(shù)組中的對象也被復(fù)制),可以使用 map() 方法結(jié)合展開運(yùn)算符或 Object.assign()。
const originalArray = [{ id: 1, value: 'a' }, { id: 2, value: 'b' }];
const newArray = originalArray.map(item => ({ ...item })); // 深拷貝每個對象
// 修改 newArray 中的對象
newArray[0].value = 'z';
// originalArray 不受影響
console.log(originalArray[0].value); // 輸出: 'a'
console.log(newArray[0].value); // 輸出: 'z'在 Vue 中使用
在 Vue 組件中,你可以在計(jì)算屬性(computed properties)或方法(methods)中使用這些方法來確保數(shù)據(jù)的獨(dú)立性。例如:
<template>
<div>
<p>Original Array: {{ originalArray }}</p>
<p>New Array: {{ newArray }}</p>
</div>
</template>
<script>
import { ref, computed } from 'vue';
export default {
setup() {
const originalArray = ref([{ id: 1, value: 'a' }, { id: 2, value: 'b' }]);
const newArray = computed(() => originalArray.value.map(item => ({ ...item })));
// 修改 newArray 的值(例如,改變第一個元素的 value)
newArray.value[0].value = 'z';
return { originalArray, newArray };
}
}
</script>這樣,originalArray 和 newArray 就保持了獨(dú)立性,修改 newArray 不會影響 originalArray。
到此這篇關(guān)于vue3 數(shù)組間取消強(qiáng)關(guān)聯(lián)的幾種實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)vue3 數(shù)組間取消強(qiáng)關(guān)聯(lián)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue2.x版本中computed和watch的使用及關(guān)聯(lián)和區(qū)別
- Vue實(shí)現(xiàn)側(cè)邊導(dǎo)航欄于Tab頁關(guān)聯(lián)的示例代碼
- Vue Element前端應(yīng)用開發(fā)之動態(tài)菜單和路由的關(guān)聯(lián)處理
- Vue實(shí)現(xiàn)關(guān)聯(lián)頁面多級跳轉(zhuǎn)(頁面下鉆)功能的完整實(shí)例
- Vue 樣式切換及三元判斷樣式關(guān)聯(lián)操作
- vue實(shí)現(xiàn)form表單與table表格的數(shù)據(jù)關(guān)聯(lián)功能示例
相關(guān)文章
Vue.js中extend選項(xiàng)和delimiters選項(xiàng)的比較
這篇文章主要介紹了Vue.js中extend選項(xiàng)和delimiters選項(xiàng)的比較的相關(guān)資料,需要的朋友可以參考下2017-07-07
Vue自定義指令實(shí)現(xiàn)卡片翻轉(zhuǎn)功能
這篇文章主要給大家介紹了Vue自定義指令實(shí)現(xiàn)卡片翻轉(zhuǎn)功能的代碼示例,文章通過代碼示例講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的參幫助,需要的朋友可以參考下2023-11-11
使用Vue3實(shí)現(xiàn)一個簡單的思維導(dǎo)圖組件
思維導(dǎo)圖是一種用于表示信息、想法和概念的圖形化工具,本文將基于 Vue3和VueDraggable實(shí)現(xiàn)一個簡單的思維導(dǎo)圖組件,支持節(jié)點(diǎn)拖拽,編輯及節(jié)點(diǎn)之間的關(guān)系連接,希望對大家有所幫助2025-04-04
vue中路由跳轉(zhuǎn)的多種方式(和$router下路由跳轉(zhuǎn)的那幾個方法的區(qū)別)
Vue.js是一款流行的前端JavaScript框架,它提供了多種方式來實(shí)現(xiàn)路由跳轉(zhuǎn),本文給大家分享vue中路由跳轉(zhuǎn)的幾種方式(和$router下路由跳轉(zhuǎn)的那幾個方法的區(qū)別),感興趣的朋友一起看看吧2023-11-11
vue swipe自定義組件實(shí)現(xiàn)輪播效果
這篇文章主要為大家詳細(xì)介紹了vue swipe自定義組件實(shí)現(xiàn)輪播效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07
關(guān)于Vue 消除Token過期時刷新頁面的重復(fù)提示問題
很多朋友在token過期時刷新頁面,頁面長時間未操作,再刷新頁面時,第一次彈出“token失效,請重新登錄!”提示,針對這個問題該怎么處理呢,下面小編給大家?guī)碓蚍治黾敖鉀Q方法,一起看看吧2021-07-07

