我必须将类似的数字分组到一个数组中。 例如:
var original_Array=[1,1,2,3,3];
这是我原来的数组。但我必须将此数组拆分为
Array_1 = [ 1, 1 ];
Array_2 = [ 2 ];
Array_3 = [ 3, 3 ];
如何从java脚本中拆分原始数组。
请查看实际情况:
handleAutoSplit(e) {
e.preventDefault();
var item = this.state.item;
var lines = item.order_items;
var lines=item.order_items.splice(0);
for (var j = 0; j < lines.length; j++) {
for ( var k=j+1; k < lines.length; k++) {
if (lines[j].split_number == lines[k].split_number) {
var count=0;
var line = {
line_id: uuidv4(),
split_number:lines[count].split_number,
product_quantity:lines[count].product_quantity
};
item.order_items.push(line);
count++
}
this.setState({ item: item })
}
}
this.props.create(this.state.item);
item.order_items.splice(0);
}
答案 0 :(得分:1)
您可以使用Map
执行此操作:这样,当您的数组未排序时,它也会起作用。使用reduce
构建它,然后使用Map#values
方法从中获取值:
var a = [1,1,2,3,3];
var res = [...a.reduce ( (acc, v) => acc.set(v, (acc.get(v) || []).concat(v)),
new Map).values()];
console.log(res);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
对于那些喜欢非ES6,非功能性代码的人:
var a = [1,1,2,3,3],
acc = {},
res = [],
i, v;
for (i = 0; i < a.length; i++) {
v = a[i];
if (!(v in acc)) {
acc[v] = [];
}
acc[v].push(v);
}
for (v in acc) {
res.push(acc[v]);
}
console.log(res);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;