Kev*_*sti -2 javascript arrays sorting grouping
这个想法基本上是在数组中没有相似值的重复值。
示例数组包含值
input = [1,2,2,2,2,3,4,5,6,7,8,9]<br/>
Run Code Online (Sandbox Code Playgroud)
预期输出有一些东西
likeoutput = [1,2,3,2,4,2,5,2,6,2,7,8,9]<br/>
Run Code Online (Sandbox Code Playgroud)
我尝试将其放在for循环中,在其中检查下一项,如果相同,则交换值。问题是当我有连续的相似值时。
该提案的特征
[1, 1, 1, 1, 3, 3]),它是如何工作的?
作为示例,我采用以下数组:
[1, 2, 2, 2, 2, 3, 4, 5, 6, 7, 8, 9]
使用元素数构建对象,然后将元素作为键存储。
Run Code Online (Sandbox Code Playgroud)length = { "1": 1, "2": 4, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1 }- 选择具有最大值的属性:
length[2] = 4用先前值的长度创建一个新数组,并用空数组填充它。
Run Code Online (Sandbox Code Playgroud)output = [[], [], [], [], []]- 检查扩展数组是否可能。如果没有,请返回。
设置
k为属性最大值的键。Run Code Online (Sandbox Code Playgroud)k = '2'- 如果是,请继续。否则转到11。
设置
l为的值length[k]。Run Code Online (Sandbox Code Playgroud)l = 4- 遍历
l并推入k索引为的数组末尾i % outputLength。增加i。- 删除属性
k。- 继续5。
返回平面
output数组。Run Code Online (Sandbox Code Playgroud)output first then continued array 0: 2 1 6 array 1: 2 3 7 array 2: 2 4 8 array 3: 2 5 9 return: 2 1 6 2 3 7 2 4 8 2 5 9 distance | | | | is equal
length = {
"1": 1, "2": 4, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1
}
Run Code Online (Sandbox Code Playgroud)
output = [[], [], [], [], []]
Run Code Online (Sandbox Code Playgroud)