vue 数组对象 交换位置

vue 数组对象 交换位置

有这样的数组

let data = [[{id: a1},{id: a2}],[{id: b3},{id: b4}],[{id: c5}, {id: c6}]]

怎么能用公共的方法,实现前后位置交换,交换后得到如下数据

let data = [[{id: b3},{id: b4}],[{id: a1},{id: a2}],[{id: c5}, {id: c6}]]

或者

let data = [[{id: a1},{id: a2}],[{id: c5}, {id: c6}][{id: b3},{id: b4}]]


回答:

言词可能有点激烈 —— 但是,大半夜看到这样的问题我实在很难冷静!

好像已经是第二次遇到这样的问题了,数组元素交换位置不是基本操作吗?

const a = [1, 2, 3, 4];

如果要交换 2 和 3 的位置,也就是索引位置 1 和 2 的元素,最简单连脑筋都不需要动的办法

const t = a[1];

a[1] = a[2];

a[2] = t;

为什么需要中间变量 t,自己想想。

如果你学 JavaScript 语言学得比较好(从问题来看基本上要排除这个可能),可以用解构语法来交换

[a[1], a[2]] = [a[2], a[1]];

因为要求是交换前后位置,可以写一个简单的函数,给一个索引 i,交换 i 和 i + 1 的位置。

function swap(arr, i) {

[arr[i], arr[i + 1]] = [arr[i + 1], a[i]];

}

这样对了吗?一般情况下,但有特殊情况,如果 i 是给的最后一个索引号呢?比如上面的第 3 个索引。这是最容易想到的错误,其实还有索引号小于 0 或者大于最后一个索引的情况。所以需要容错/报错处理。到底是容错还是报错,或者如何容错就要看你准备在出错的时候怎么办。比如现在假设,出错就不做处理

function swap(arr, i) {

if (i < 0 || i >= arr.length - 1) {

return;

}

// 这里是原来那些代码

}

不要问:这里元素都是数,但我要换的元素是一个数组,该怎么办?

数和数组作为元素来说,有区别吗?如果中学学过代数,就能明白,每个元素看作一个整体,不需要去管他的细节。

以上是 vue 数组对象 交换位置 的全部内容, 来源链接: utcz.com/p/936936.html

回到顶部