我有一个对象列表,我想合并连续的重复值.
在这个对象列表中,我们有三个值(B)
和三个值(A)
.如果这些值是重复和连续的,我想在{list}
处合并现有列表.
let array = [
{list:[1,2,3], book:'A'},
{list:[2,1,4], book:'B'},
{list:[3,5,8], book:'A'},
{list:[4,8,5], book:'B'},// *
{list:[2,8,9], book:'B'},// *
{list:[6,2,7], book:'B'},// *
{list:[9,7,4], book:'A'},
{list:[1,4,7], book:'B'},
{list:[1,9,3], book:'A'},// *
{list:[5,2,3], book:'A'},// *
{list:[7,4,2], book:'A'},// *
]
结果将是这样的:
result = [
{list:[1,2,3], book:'A'},
{list:[2,1,4], book:'B'},
{list:[3,5,8], book:'A'},
{list:[4,8,5,2,8,9,6,2,7], book:'B'},// *
{list:[9,7,4], book:'A'},
{list:[1,4,7], book:'B'},
{list:[1,9,3,5,2,3,7,4,2], book:'A'},// *
]
提前谢谢你.
let array = [
{list:[1,2,3], book:'A'},
{list:[2,1,4], book:'B'},
{list:[3,5,8], book:'A'},
{list:[4,8,5], book:'B'},// *
{list:[2,8,9], book:'B'},// *
{list:[6,2,7], book:'B'},// *
{list:[9,7,4], book:'A'},
{list:[1,4,7], book:'B'},
{list:[1,9,3], book:'A'},// *
{list:[5,2,3], book:'A'},// *
{list:[7,4,2], book:'A'},// *
]
let A = []
let B = []
for (let x = 0; x < array.length; x++){
if( array[x].book == 'A' && array[x+1].book == 'A'){
A = A.concat(array[x].list, array[x+1].list)
}
else if( array[x].book == 'B' && array[x+1].book == 'B'){
B = B.concat(array[x].list, array[x+1].list)
}
}
let adds = []
for (let x = 0; x < array.length; x++){
if( array[x].book == 'A' && array[x+1].book == 'A' ){
let A = d3.range( A[0], A[A.length-1]-1, -1)
let obj = {list:A, book:'A'}
adds.push(obj)
}
if( array[x].book == 'B' && array[x+1].book == 'B' ){
let B = d3.range( B[0], B[B.length-1]+1, 1)
let obj = {price:B, trend:'B'}
adds.push(obj)
}
if ( array[x].book == 'A' && array[x+1].book == 'B' && array[x-1].book != 'A'){
let obj = {list:array[x].list, book: 'A' }
adds.push(obj)
}
if ( array[x].book == 'B' && array[x+1].book == 'A' && array[x-1].book != 'B' ){
let obj = {list:array[x].list, book: 'B' }
adds.push(obj)
}
}
console.log( adds )