VUE操作数组方法

变异方法 ------>>>> 会改变被调用的原始数组

push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。

        let arrayPush = []
        arrayPush.push(1)
        arrayPush.push(3)
        arrayPush.push(2)
        console.log(arrayPush) //=> [1,3,2]

pop() 方法用于删除并返回数组的最后一个元素。

        let arrayPop = [1, 2, 3, 6]
        arrayPop.pop()
        let arrayPopb = arrayShift.pop()
        console.log(arrayPopb) //=> 6
        console.log(arrayPop) //=> [1, 2, 3]

shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。

        let arrayShift = [1, 2, 3, 6]
        arrayShift.shift()
        let b = arrayShift.shift()
        console.log(b) //=> 2
        console.log(arrayShift) //=> [2, 3, 6]

unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。

        let arrayUnshift = [3, 6]
        arrayUnshift.unshift(1)
        console.log(arrayUnshift) //=> [1,3,6]

splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。

        // splice(index,len,[item])
        // index:数组开始下标
        // len: 替换/删除的长度
        // item:替换的值,删除操作的话 item为空

        // 删除:
        //删除起始下标为1,长度为1的一个值(len设置1,如果为0,则数组不变)
        var arrD = ['a', 'b', 'c', 'd'];
        arrD.splice(1, 1);
        console.log(arrD); //['a','c','d']; 

        //删除起始下标为1,长度为2的一个值(len设置2)
        var arrD2 = ['a', 'b', 'c', 'd']
        arrD2.splice(1, 2);
        console.log(arrD2); //['a','d']


        // 替换:
        //替换起始下标为1,长度为1的一个值为‘ttt’,len设置的1
        var arrR = ['a', 'b', 'c', 'd'];
        arrR.splice(1, 1, 'ttt');
        console.log(arrR); //['a','ttt','c','d'] 

        //替换起始下标为1,长度为2的两个值为‘ttt’,len设置的1
        var arrR2 = ['a', 'b', 'c', 'd'];
        arrR2.splice(1, 2, 'ttt');
        console.log(arrR2); //['a','ttt','d'] 

        // 添加:
        //在下标为1处添加一项'ttt'
        var arrA = ['a', 'b', 'c', 'd'];
        arrA.splice(1, 0, 'ttt');
        console.log(arrA); //['a','ttt','b','c','d'] 

sort() 方法用于对数组的元素进行排序。

        // 第一个参数是插入位置,第二个参数是删除若干个元素,设置0为不删除任何元素,第三个及以后是插入的值
        let arraySplice = [1, 2, 3, 4]

        arraySplice.splice(2, 0, 6)
        console.log(arraySplice) //=> [1, 2, 6, 3, 4]

        arraySplice.splice(3, 0, 4, 5)
        console.log(arraySplice) //=> [1, 2, 6, 4, 5, 3, 4]

        arraySplice.splice(4, 3, 8, 9)
        console.log(arraySplice) //=> [1, 2, 6, 4, 8, 9]
        //对象属性排序
        let students = []
        students.push({
          name: 'cjk',
          age: '38'
        }, {
          name: 'xxf',
          age: '29'
        }, {
          name: 'zk',
          age: '26'
        }, )

        let students2 = this.sortByKey(students, 'age')
        console.log(students2) 

      sortByKey: function (array, key) {
        return array.sort(function (a, b) {
          var x = a[key];
          var y = b[key];
          return ((x < y) ? -1 : ((x > y) ? 1 : 0));
        })
      }

reverse() 方法用于颠倒数组中元素的顺序

        let arrayReverse = [1, 9, 4, 2]
        arrayReverse.reverse()
        console.log(arrayReverse) //=> [2, 4, 9, 1]

替换数组 ——>>>> 不会改变被调用的原始数组

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

        let arrayFilter = [1, 9, 4, 2]
        let arrayFilter2 = arrayFilter.filter(function (arrayFilter) {
          return arrayFilter >= 2;
        })
        console.log(arrayFilter2); //[9, 4, 2] 

concat() 方法用于连接两个或多个数组。

        let arrayConcat = [1, 9, 4, 2]
        let arrayConcat2 = [6, 7, 8, 3]
        let arrayConcat3 = arrayConcat.concat(arrayConcat2)
        arrayConcat3.sort(function (a, b) {
          return a - b;
        })
        console.log(arrayConcat3); //[1, 2, 3, 4, 6, 7, 8, 9]

slice() 方法可从已有的数组中返回选定的元素。

        //slice()接受一个或两个参数,即要返回项的起始和结束位置。当只给slice()传递一个参数时,该方法返回从该参数指定位置开始到当前数组末尾的所有项。
        let arraySlice = [1, 2, 3, 4, 6, 7, 8, 9]
        let arraySlice1 = arraySlice.slice(4)
        let arraySlice2 = arraySlice.slice(3,6)
        console.log(arraySlice); //[1, 2, 3, 4, 6, 7, 8, 9]
        console.log(arraySlice1); //[6, 7, 8, 9]
        console.log(arraySlice2); //[4, 6, 7]

其他

split() 方法用于把一个字符串分割成字符串数组。

        let stringNum = '1,2,3,4,5,6,7,8'
        let arrayNum = stringNum.split(',')
        console.log(arrayNum); // ["1", "2", "3", "4", "5", "6", "7", "8"]
Vue 3 中,数组操作Vue 2 相比有部分变化,特别是在响应式系统方面引入了 `Proxy` 和 Composition API。以下是一些常用的数组操作方法及其在 Vue 3 中的使用指南。 ### 使用 `ref` 和 `reactive` 创建响应式数组 Vue 3 提供了两种方式来创建响应式数据:`ref` 和 `reactive`。对于数组来说,通常推荐使用 `reactive` 来创建响应式数组。 ```javascript import { reactive } from 'vue' export default { setup() { const items = reactive([ { id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }, { id: 3, name: 'Item 3' } ]) return { items } } } ``` 由于 `reactive` 返回的是一个对象,因此可以直接对其进行修改而不会失去响应性[^5]。 --- ### 使用 `map` 方法转换数组Vue 3 中可以使用 `map` 方法数组进行处理,例如添加新的属性或者修改现有元素。这种技术在计算属性中非常常见。 ```javascript import { computed } from 'vue' const originalItems = reactive([ { id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' } ]) const updatedItems = computed(() => { return originalItems.map(item => ({ ...item, selected: false })) }) ``` 这种方法非常适合用于向每个数组项中添加新的字段(如 `selected`)以支持交互功能(如全选/反选)[^2]。 --- ### 使用 `filter`、`reduce` 等方法进行数组处理 除了 `map` 外,还可以使用其他数组方法如 `filter` 或 `reduce` 进行更复杂的数组操作。 ```javascript const filteredItems = computed(() => { return originalItems.filter(item => item.id > 1) }) ``` 上述代码展示了如何通过 `filter` 来筛选出 ID 大于 1 的项目。这对于实现动态过滤功能非常有用[^4]。 --- ### 在模板中渲染数组Vue 模板中,可以通过 `v-for` 指令遍历数组并渲染列表。 ```html <template> <ul> <li v-for="item in updatedItems" :key="item.id"> {{ item.name }} </li> </ul> </template> ``` 此方法确保每次数组发生变化时,视图会自动更新[^1]。 --- ### 动态修改数组内容 在 Vue 3 中,如果需要动态地修改数组中的某个元素,可以使用 `.splice()` 方法或者直接赋值给数组索引位置。 ```javascript function updateItem(index) { originalItems.splice(index, 1, { ...originalItems[index], name: 'Updated Name' }) } ``` 这种方法保证了数组的响应性不会丢失,并且能够正确触发视图更新[^5]。 --- ### 全选与反选功能实现 对于二维数组,可以结合 `every` 和 `some` 方法来判断是否所有或某些项被选中。 ```javascript const allSelected = computed(() => { return items.every(item => item.selected) }) function toggleAll() { const newValue = !allSelected.value items.forEach(item => (item.selected = newValue)) } ``` 此逻辑可用于实现表格中的“全选”按钮功能[^3]。 --- ### 示例:将一维数组转换为二维数组 假设有一个一维数组,想要将其拆分为多个子数组形成二维结构: ```javascript function chunkArray(arr, size) { const result = [] for (let i = 0; i < arr.length; i += size) { result.push(arr.slice(i, i + size)) } return result } const twoDItems = chunkArray(originalItems, 2) ``` 此函数可将任意一维数组按指定大小分割成二维数组,适用于网格布局等场景[^1]。 ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值