map forEach 内部循环时候貌似会用content hash来确定当前遍历项的唯一性;或者说rest 合并运算符concat 方法有这个特性

开发大转盘相邻不同色功能过程中复制了几条相同的假数据做测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
let awards = res.data.kuaishouLotteryVOS.concat(res.data.kuaishouLotteryVOS.slice(0, 2));
let newAwards = [];
if (awards.length && awards.length % 2 == 1) {
const colorList = ['#f7f7f7', '#f8d384', '#f9e3bb']
newAwards = awards.map((item, index, arr) => {
const length = arr.length
const key = index % 3;
item.color = colorList[key];
if (length > 3 && (length % 3 == 1) && (index == (length - 1))) {
item.color = colorList[1]
console.log(99999)
}
console.log(index, key, length, index == (length - 1), length > 3, length % 3 == 1, item.color, item)
return item;
});
console.log(JSON.stringify(newAwards))

前两个和倒数两个key value相同的对象颜色相同了

1
2
3
4
5
6
7
8
9
10
index.vue?6ced:106 0 0 9 false true false "#f7f7f7" {lotteryId: 5, name: "5", fee: 5, feeStr: "5.00", color: "#f7f7f7"}
16:50:20.954 index.vue?6ced:106 1 1 9 false true false "#f8d384" {lotteryId: 1, name: "1", fee: 1, feeStr: "1.00", color: "#f8d384"}
16:50:20.954 index.vue?6ced:106 2 2 9 false true false "#f9e3bb" {lotteryId: 4, name: "4", fee: 4, feeStr: "4.00", color: "#f9e3bb"}
16:50:20.954 index.vue?6ced:106 3 0 9 false true false "#f7f7f7" {lotteryId: 3, name: "3", fee: 3, feeStr: "3.00", color: "#f7f7f7"}
16:50:20.955 index.vue?6ced:106 4 1 9 false true false "#f8d384" {lotteryId: 2, name: "1", fee: 2, feeStr: "2.00", color: "#f8d384"}
16:50:20.955 index.vue?6ced:106 5 2 9 false true false "#f9e3bb" {lotteryId: 6, name: "6", fee: 6, feeStr: "6.00", color: "#f9e3bb"}
16:50:20.955 index.vue?6ced:106 6 0 9 false true false "#f7f7f7" {lotteryId: 7, name: "7", fee: 7, feeStr: "7.00", color: "#f7f7f7"}
16:50:20.955 index.vue?6ced:106 7 1 9 false true false "#f8d384" {lotteryId: 5, name: "5", fee: 5, feeStr: "5.00", color: "#f8d384"}
16:50:20.956 index.vue?6ced:106 8 2 9 true true false "#f9e3bb" {lotteryId: 1, name: "1", fee: 1, feeStr: "1.00", color: "#f9e3bb"}
16:50:20.956 index.vue?6ced:109 [{"lotteryId":5,"name":"5","fee":5,"feeStr":"5.00","color":"#f8d384"},{"lotteryId":1,"name":"1","fee":1,"feeStr":"1.00","color":"#f9e3bb"},{"lotteryId":4,"name":"4","fee":4,"feeStr":"4.00","color":"#f9e3bb"},{"lotteryId":3,"name":"3","fee":3,"feeStr":"3.00","color":"#f7f7f7"},{"lotteryId":2,"name":"1","fee":2,"feeStr":"2.00","color":"#f8d384"},{"lotteryId":6,"name":"6","fee":6,"feeStr":"6.00","color":"#f9e3bb"},{"lotteryId":7,"name":"7","fee":7,"feeStr":"7.00","color":"#f7f7f7"},{"lotteryId":5,"name":"5","fee":5,"feeStr":"5.00","color":"#f8d384"},{"lotteryId":1,"name":"1","fee":1,"feeStr":"1.00","color":"#f9e3bb"}]