排序数组以避免相邻项具有重复属性
|
我有一个对象数组。每个对象都有一个颜色属性,可以是\“红色\”,\“蓝色\”,\“黄色\”,\“绿色\”,\“橙色\”或\“紫色\”。数组中有20-30个对象,因此颜色会重复。我的目标是对数组进行排序,以使彼此之间没有颜色。颜色分布不完全均匀,而是接近。
到目前为止,这就是我所拥有的。它检查下一个和上一个对象是否存在颜色匹配,如果找到匹配的颜色,则将其移动到数组的末尾。
private function sortColors():void
{
var getNext:uint;
var getPrev:uint;
var maxCount:uint = colorArray.length;
for (var i:uint = 0; i < maxCount; i++) {
var cur:ValueObject = colorArray[i];
(i == maxCount-1) ? getNext = 0 : getNext = i+1;
(i == 0) ? getPrev = maxCount-1 : getPrev = i-1;
var next:ValueObject = colorArray[getNext];
var prev:ValueObject = colorArray[getPrev];
if (cur.color == next.color) {
var move:ValueObject = colorArray[getNext];
colorArray.splice(getNext, 1);
colorArray.push(move);
}
if (cur.color == prev.color) {
var move:ValueObject = colorArray[getPrev];
colorArray.splice(getPrev, 1);
colorArray.push(move);
}
}
}
这样可以正常工作,但是如果有更多的某种颜色,它们最终会在最后重复。我可以在结尾添加一些内容,以将其重新组合,但我觉得必须有更好的方法。有人启发我。
没有找到相关结果
已邀请:
1 个回复
邵酮