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