我有数组const arr = [1,2,3,4]
我希望通过交换此数组中的数字对来获得4个不同的数组。
I. e。这个数组的结果将是:
1st:[2,1,3,4]
第二名:[1,3,2,4]
第3名:[1,2,4,3]
4rd:[4,2,3,1]
(交换第一个和最后一个元素)
我知道Object.assign
有助于避免突变但不确定如何实施突变。
[2,1,3,4]
重复
[1,3,2,4]
等
答案 0 :(得分:0)
对于任何给定的数组,您将生成一个以单交换为特征的数组数组。值得注意的是,这个数组数组与原始数组具有相同的长度(n),并且i th 数组交换元素i和(i + 1)%n。知道了,这是使用map,Object.assign和slice的解决方案:
[ 1, 2, 3, 4 ].map( ( element, index, arr ) =>
Object.assign( arr.slice(), {
[ index ]: arr[ ( index + 1 ) % arr.length ],
[ ( index + 1 ) % arr.length ]: arr[ index ]
} ) );
注意element
未使用。