const prod_list = [
{
"check_detail_id": 160,
"spu_id": 19918787,
"sku_id": 1002355,
"goods_name": "多规格测试",
"spu_type_id": 499,
"spu_type_name": "未分类",
"brand_id": 271,
"brand_name": "可口可乐",
"profit_type": 1,
"sku_no": "P220607035840662",
"sku_code": "BM19918787311002355",
"spec_define_tuple": "[{\"specs_key_id\":82,\"specs_key_name\":\"尺码\",\"specs_value_id\":230,\"specs_value_name\":\"M\"},{\"specs_key_id\":83,\"specs_key_name\":\"颜色\",\"specs_value_id\":233,\"specs_value_name\":\"红色\"},{\"specs_key_id\":84,\"specs_key_name\":\"内存\",\"specs_value_id\":235,\"specs_value_name\":\"64\"}]",
"specs_detail": "M,红色,64",
"unit_id": 1491,
"unit_name": "包",
"sell_stock_num": 0,
"actual_invent_num": 0,
"actual_check_num": 1,
"profit_type_name": "盘盈",
"profit_num": 1,
"profit_price": 0,
"photo_url": "jpeg",
"head_photo_url": "jpeg",
"goods_multi_type": 2,
"cost_money": 0
},
{
"check_detail_id": 161,
"spu_id": 19918787,
"sku_id": 1002356,
"goods_name": "多规格测试",
"spu_type_id": 499,
"spu_type_name": "未分类",
"brand_id": 271,
"brand_name": "可口可乐",
"profit_type": 1,
"sku_no": "P220607772211494",
"sku_code": "BM19918787611002356",
"spec_define_tuple": "[{\"specs_key_id\":82,\"specs_key_name\":\"尺码\",\"specs_value_id\":230,\"specs_value_name\":\"M\"},{\"specs_key_id\":83,\"specs_key_name\":\"颜色\",\"specs_value_id\":233,\"specs_value_name\":\"红色\"},{\"specs_key_id\":84,\"specs_key_name\":\"内存\",\"specs_value_id\":236,\"specs_value_name\":\"128\"}]",
"specs_detail": "M,红色,128",
"unit_id": 1491,
"unit_name": "包",
"sell_stock_num": 0,
"actual_invent_num": 0,
"actual_check_num": 2,
"profit_type_name": "盘盈",
"profit_num": 2,
"profit_price": 0,
"photo_url": "jpeg",
"head_photo_url": "jpeg",
"goods_multi_type": 2,
"cost_money": 0
},
{
"check_detail_id": 162,
"spu_id": 19918787,
"sku_id": 1002357,
"goods_name": "多规格测试",
"spu_type_id": 499,
"spu_type_name": "未分类",
"brand_id": 271,
"brand_name": "可口可乐",
"profit_type": 1,
"sku_no": "P220607510996235",
"sku_code": "BM19918787381002357",
"spec_define_tuple": "[{\"specs_key_id\":82,\"specs_key_name\":\"尺码\",\"specs_value_id\":230,\"specs_value_name\":\"M\"},{\"specs_key_id\":83,\"specs_key_name\":\"颜色\",\"specs_value_id\":234,\"specs_value_name\":\"黑色\"},{\"specs_key_id\":84,\"specs_key_name\":\"内存\",\"specs_value_id\":235,\"specs_value_name\":\"64\"}]",
"specs_detail": "M,黑色,64",
"unit_id": 1491,
"unit_name": "包",
"sell_stock_num": 0,
"actual_invent_num": 0,
"actual_check_num": 3,
"profit_type_name": "盘盈",
"profit_num": 3,
"profit_price": 0,
"photo_url": "1",
"head_photo_url": "2",
"goods_multi_type": 2,
"cost_money": 0
},
{
"check_detail_id": 163,
"spu_id": 19918787,
"sku_id": 1002358,
"goods_name": "多规格测试",
"spu_type_id": 499,
"spu_type_name": "未分类",
"brand_id": 271,
"brand_name": "可口可乐",
"profit_type": 1,
"sku_no": "P220607409274595",
"sku_code": "BM19918787781002358",
"spec_define_tuple": "[{\"specs_key_id\":82,\"specs_key_name\":\"尺码\",\"specs_value_id\":230,\"specs_value_name\":\"M\"},{\"specs_key_id\":83,\"specs_key_name\":\"颜色\",\"specs_value_id\":234,\"specs_value_name\":\"黑色\"},{\"specs_key_id\":84,\"specs_key_name\":\"内存\",\"specs_value_id\":236,\"specs_value_name\":\"128\"}]",
"specs_detail": "M,黑色,128",
"unit_id": 1491,
"unit_name": "包",
"sell_stock_num": 0,
"actual_invent_num": 0,
"actual_check_num": 4,
"profit_type_name": "盘盈",
"profit_num": 4,
"profit_price": 0,
"photo_url": "jpeg",
"head_photo_url": "jpeg",
"goods_multi_type": 2,
"cost_money": 0
}
]
// 批量删除对象某个数据
function delObjKeys(obj, keys) {
keys.map((key) => {
delete obj[key]
})
return obj
}
// 对编辑数据进行处理 组合数组
function combinedArrays(data) {
// 需要删除的key
const delKey = [
'sku_id',
'specs_list',
'check_detail_id',
'detail_remarks',
'specs_detail',
'spec_define_tuple'
]
let combinedArr = data.reduce((prev, cur) => {
const { spu_id, spec_define_tuple, goods_multi_type } = cur
let specs_list = []
// 自行处理后端返回的格式数据
if (spec_define_tuple) {
specs_list = JSON.parse(spec_define_tuple).map(spec => ({
value_name: spec.specs_value_name,
value_id: spec.specs_value_id,
key_id: spec.specs_key_id,
key_name: spec.specs_key_name
}))
}
const item = {
...cur,
specs_list
}
const exist = prev.find(spec => spec.spu_id === spu_id)
if (exist) {
exist.customCheckSpecArr.push(item)
} else {
if (goods_multi_type === 2) {
const params = {
...item,
customCheckSpecArr: [item]
}
prev.push(delObjKeys({ ...params }, delKey))
} else {
prev.push(cur)
}
}
return prev
}, [])
console.log('combinedArr', combinedArr)
return combinedArr
}
combinedArrays(prod_list)
console