cfscript 随机打乱数组元素顺序

前段时间有遇到这样的一个需求,原本给定一个数组,比如是:

array = [‘1′,’2′,’3′,’4′,’5’]

现在需要把数组里所有元素的顺序随机打乱,于是自己写了一个算法,分享出来。


	public array function sortQuestions( required array arrayOfQuesions){
		LOCAL.arrayOfSortedQuestion = [];

		numOfQuestions = arrayLen(ARGUMENTS.arrayOfQuesions);
		for (i=1; i<=numOfQuestions; i=i+1) {
			if(i == numOfQuestions){
				maxNum = 1;
			}
			else{
				maxNum = numOfQuestions - i + 1;
			}
			pos = randRange(1, maxNum);
			arrayAppend(LOCAL.arrayOfSortedQuestion, ARGUMENTS.arrayOfQuesions[pos]);
			arrayDeleteAt(ARGUMENTS.arrayOfQuesions, pos);
		}

		return LOCAL.arrayOfSortedQuestion;
	}

	writeDump(sortQuestions(['1','2','3','4','5']));

执行一次得出的结果是:
random_items