JavaScript。有一个对象数组
0:{mask: "202 203, 287 376, 412 162, 381 121", add: 1}
1:{mask: "108 511, 247 291, 151 186, 97 180", add: 1}
2:{mask: "147 202, 289 234, 268 113", add: 0}
3:{mask: "79 225, 318 374, 443 212, 359 118", add: 1}
4:{mask: "116 253, 327 351, 377 198, 361 171", add: 1}
5:{mask: "232 237, 288 566, 406 481, 458 240, 421 188", add: 0}
6:{mask: "222 391, 361 298, 347 170", add: 0}
需要将它们分成add = 1
,然后在下一个add = 0
之后,add = 1
之前的几个ar1 = [
0: {mask: "202 203, 287 376, 412 162, 381 121", add: 1}
]
ar2 = [
0: {mask: "108 511, 247 291, 151 186, 97 180", add: 1}
1: {mask: "147 202, 289 234, 268 113", add: 0}
]
ar3 = [
0: {mask: "79 225, 318 374, 443 212, 359 118", add: 1}
]
ar4 = [
0: {mask: "116 253, 327 351, 377 198, 361 171", add: 1}
1: {mask: "232 237, 288 566, 406 481, 458 240, 421 188", add: 0}
2: {mask: "222 391, 361 298, 347 170", add: 0}
]
数组中,并保留这样的顺序
add = 1
它可以是对象数组(内部数组)没关系,主要是带有add = 0
的组元素以及所有接下来的xinput --list
答案 0 :(得分:3)
Reduce可以帮助您,但这是一个技巧。如果您不喜欢reduce,可以采用for循环
const arr = [{mask: "202 203, 287 376, 412 162, 381 121", add: 1},
{mask: "108 511, 247 291, 151 186, 97 180", add: 1},
{mask: "147 202, 289 234, 268 113", add: 0},
{mask: "79 225, 318 374, 443 212, 359 118", add: 1},
{mask: "116 253, 327 351, 377 198, 361 171", add: 1},
{mask: "232 237, 288 566, 406 481, 458 240, 421 188", add: 0},
{mask: "222 391, 361 298, 347 170", add: 0}];
const result = [];
arr.reduce((a,b) => {
if (a === null || b.add == 1)
result.push([]);
result[result.length-1].push(b);
return b
},null)
console.log(result);