Вы можете сделать это с помощью этого кода:
function separator(a) {
var result = [];
for (var i = 0; i < a.length; i++) {
var index = a[i].trim().toLowerCase();
switch (index) {
case "x":
case "y":
case "z":
if (result[index] == undefined) {
result.push([index]);
}
break;
default:
result[result.length - 1].push(a[i]);
}
}
return result;
}
// Sample:
var arr = ["x", "foo", "y", "bar", "baz", "z", "0"];
console.log(separator(arr));
// Result must be:
// [["x", "foo"], ["y", "bar", "baz"], ["z", "0"]]
Или использовать это для группировки:
function separator(a) {
var result = {};
var lastIndex = "";
for (var i = 0; i < a.length; i++) {
var index = a[i].trim().toLowerCase();
switch (index) {
case "x":
case "y":
case "z":
if (result[index] == undefined) {
result[index] = [];
}
lastIndex = index;
break;
default:
result[lastIndex].push(a[i]);
}
}
return result;
}
// Sample:
var arr = ["x", "foo", "y", "bar", "baz", "z", "0"];
console.log(separator(arr));
// Result must be:
// {"x": ["foo"], "y": ["bar", "baz"], "z": ["0"]}
Второй код может работать с расширенным массивом следующим образом:
["x", "foo", "y", "bar", "x", "baz", "z", "0", "y", "bar2"]
And result is this:
{"x": ["foo", "baz"], "y": ["bar", "bar2"], "z": ["0"]}