0
我有一个已经排序的数组。假设我的有序数组是分组数组值
[60 , 60 ,60, 56 , 56 ,45 , 33 , 12, 10]
我想使用JavaScript
{first : [60 ,60 ,60] , second : [56 ,56] , third : [33]}
放置此数组中这种形式的对象请任何帮助,将不胜感激。 THanks
我有一个已经排序的数组。假设我的有序数组是分组数组值
[60 , 60 ,60, 56 , 56 ,45 , 33 , 12, 10]
我想使用JavaScript
{first : [60 ,60 ,60] , second : [56 ,56] , third : [33]}
放置此数组中这种形式的对象请任何帮助,将不胜感激。 THanks
您可以使用两个循环的嵌套方法,一个用于所需的键,另一个用于具有数字的数组长度。
var numbers = [60, 60, 60, 56, 56, 45, 33, 12, 10],
object = {},
i = 0; j = 0,
keys = ['first', 'second', 'third'],
last = numbers[0];
while (i < keys.length) {
object[keys[i]] = object[keys[i]] || [];
while (j < numbers.length && numbers[j] === last) {
object[keys[i]].push(numbers[j]);
j++;
}
last = numbers[j];
i++;
}
console.log(object);
与更紧凑风格的提案。
function groupByTop(items, object) {
var last = numbers[0]
j = 0;
return function (k) {
object[k] = object[k] || [];
while (j < items.length && items[j] === last) {
object[k].push(items[j]);
j++;
}
last = items[j];
};
}
var numbers = [60, 60, 60, 56, 56, 45, 33, 12, 10],
result = {};
['first', 'second', 'third'].forEach(groupByTop(numbers, result));
console.log(result);
约'12'和'10'什么?请解释你想要达成的目标 – Rajesh
请告诉我们你到目前为止的目标:) –
'{first:arr.slice(0,3),second:...} ...? – deceze