我有一个这样的数组:
var my_array = [[6, 2], [7, 3], [9, 4], [9, 6], [3, 7]]
...我希望将数组排在不同的组中,如下所示:
var result = [ [6, 2], [7, 3], [9, 4] ],
[ [9, 6], [3, 7] ]
因为你可以看到sort方法应该将它们的array[1]
值匹配在一起的所有数组(如升序行)
以上示例中的值result[0][1]
- > 2 ,result[1][1]
- > 3 ,result[0][3]
- > 4 正在匹配。
小组result[1][0]
- > 6 和result[1][1]
- > 7 正在匹配。
BTW:my_array - 数组已经排序,因此my_array[x][1] <= my_array[x+1][1]
。
我不知道如何对此进行编码,所以这就是我现在所做的一切:
var my_array = [[6, 2], [7, 3], [9, 4], [9, 6], [3, 7]]
function sort_array(array) {
var group=[];
for (var i=array[0][1]; i<3; i++) {
if (array[i+1][1] == i) {
group.push(array[i+1])
}
else {
}
}
return group;
}
console.log(sort_array(my_array));
答案 0 :(得分:0)
我对您的要求的理解;
var my_array = [[6, 2], [7, 3], [9, 4], [9, 6], [3, 7]]
function sort_array(array) {
var results = [];
var tmp = [];
for(var i = 0; i < array.length; i++){
tmp.push(array[i]);
if(i== array.length -1 || array[i][1] != (array[i+1][1]-1)){
results.push(tmp);
tmp = [];
}
}
return results;
}
console.log(sort_array(my_array));
&#13;
答案 1 :(得分:0)
你可以使用递归进行分组,它基本上比较当前和下一个数字,如果下一个数字是连续的,它将继续自我调用,如果它不是连续的,它将添加一个新的组然后调用自己,直到有没有下一个价值。
"use strict" // this will allow tail call recursion in modern browsers
const my_array = [[5, 0], [6, 2], [7, 3], [9, 4], [9, 6], [3, 7], [4, 10]]
function groupConsecutiveYs([curr, ...rest], acc = [[]]) {
const next = rest[0]
// add to current group
acc[acc.length - 1].push(curr)
if (typeof next === 'undefined') // we are done return the accumulator
return acc
// if next is not consecutive add another grouping
if (curr[1] !== next[1] - 1)
acc.push([])
// call recursive function again
return groupConsecutiveYs(rest, acc)
}
console.log(
groupConsecutiveYs(my_array)
)
<script src="https://codepen.io/synthet1c/pen/KyQQmL.js?concise=true"></script>