1.先上代码
//这是一个随机函数
randomPlay() {
let result = [];
let result1 = [];
setInterval(() => {
let labels = this.labels.slice(0);
for (
let i = 0; i < this.displayNum; i++)
{
let ran = Math.floor(Math.random() * (labels.length - i));
result.push(labels[ran]);
labels[ran] = labels[labels.length - i - 1];
}
result1 = result.slice(-this.displayNum);
let featureCollection =
window.FMap3D.transform.pointsCollection(result1);
this.labelLayer.setData(featureCollection);
}, 2000);
},
//这是一个顺序函数,选择几个点进行播放
eachPlay(number) {
// console.log(number, “111”);
let labels = this.labels.slice(0);
let index = 0;
let newArray = [];
while (index < labels.length) {
var number = Integer.valueOf(index);
console.log(typeof(index));
console.log(typeof(number));
newArray.push(labels.slice(
index, (index += number))
);
}
console.log(newArray);
let i = 0;
let timer = setInterval(() => {
let featureCollection = window.FMap3D.transform.pointsCollection(
newArray[i]
);
this.labelLayer.setData(featureCollection);
i++;
console.log(newArray);
if (i > labels.length - 1) {
clearInterval(timer);
}
}, 2000);
},
从中可以看出,被引用的两块代码实现的逻辑是一样的,但是下面这块多了个string->number的强制类型转换,这是因为,随机函数里面的’<‘会先转换成数字再去判断,而顺序函数中的’+='如果是有一个是字符串有一个数字的话,会优先把数字转换成字符串,进行拼接。从而影响想要的循环效果。