[英]Create a new array from two existing arrays filtering by id with Javascript
[英]JavaScript create new Array from existing by filtering object value
我正在嘗試通過過濾數組 object 從現有數組創建新數組,僅當value.added === true AND value.SP.type === 2女巫JavaScript ZC1C425268E68385D1AB5074C17A94F1從現有數組中創建新數組? 我在陣列中有大量 object 試圖快速可能的女巫 function 我使用?
這是現有的數組
[
{
"cat_id": 38,
"rm_id": 1,
"items": {
"Box": [
[
{
"parent_name": "Box",
"child_name": "Small",
"category_name": "Box",
"SP": {
"id": 203,
"type": 2,
"price": 15
},
"added": true
},
{
"parent_name": "Box",
"child_name": "Big",
"category_name": "Box",
"SP": {
"id": 203,
"type": 2,
"price": 15
},
"added": true
},
{
"parent_name": "Box",
"child_name": "Very Big",
"category_name": "Box",
"SP": {
"id": 203,
"type": 1,
"price": 15
},
"added": true
}
]
]
}
},
{
"cat_id": 37,
"rm_id": 1,
"items": {
"Box": [
[
{
"parent_name": "Box",
"child_name": "Small",
"category_name": "Box",
"SP": {
"id": 203,
"type": 1,
"price": 15
},
"added": true
},
{
"parent_name": "Box",
"child_name": "Big",
"category_name": "Box",
"SP": {
"id": 203,
"type": 2,
"price": 15
},
"added": true
},
{
"parent_name": "Box",
"child_name": "Very Big",
"category_name": "Box",
"SP": {
"id": 203,
"type": 1,
"price": 15
},
"added": true
}
]
],
"Sets": [
[
[
{
"parent_name": "Drawers",
"child_name": "Full",
"SP": {
"id": 172,
"type": 1,
"price": 20
}
},
{
"parent_name": "Drawers",
"child_name": "Queen",
"SP": {
"id": 174,
"type": 2,
"price": 20
},
"added": true
}
],
[
{
"parent_name": "Drawers",
"child_name": "Full",
"SP": {
"id": 172,
"type": 1,
"price": 20
}
},
{
"parent_name": "Drawers",
"child_name": "Queen",
"SP": {
"id": 174,
"type": 2,
"price": 20
},
"added": true
}
]
]
]
}
}
]
我正在嘗試從現有數組創建新數組,例如 output
[
{
"cat_id": 38,
"rm_id": 1,
"parent_name": "Box",
"child_name": "Big",
"category_name": "Box",
"SP": {
"id": 203,
"type": 2,
"price": 15
},
"added": true
},
{
"cat_id": 37,
"rm_id": 1,
"parent_name": "Box",
"child_name": "Big",
"category_name": "Box",
"SP": {
"id": 203,
"type": 2,
"price": 15
},
"added": true
},
{
"cat_id": 37,
"rm_id": 1,
"parent_name": "Box",
"child_name": "Big",
"category_name": "Box",
"SP": {
"id": 203,
"type": 2,
"price": 15
},
"added": true
},
{
"cat_id": 37,
"rm_id": 1,
"parent_name": "Drawers",
"child_name": "Queen",
"SP": {
"id": 174,
"type": 2,
"price": 20
},
"added": true
}
]
const data = [ { "cat_id": 38, "rm_id": 1, "items": { "Box": [ [ { "parent_name": "Box", "child_name": "Small", "category_name": "Box", "SP": { "id": 203, "type": 2, "price": 15 }, "added": true }, { "parent_name": "Box", "child_name": "Big", "category_name": "Box", "SP": { "id": 203, "type": 2, "price": 15 }, "added": true }, { "parent_name": "Box", "child_name": "Very Big", "category_name": "Box", "SP": { "id": 203, "type": 1, "price": 15 }, "added": true } ] ] } }, { "cat_id": 37, "rm_id": 1, "items": { "Box": [ [ { "parent_name": "Box", "child_name": "Small", "category_name": "Box", "SP": { "id": 203, "type": 1, "price": 15 }, "added": true }, { "parent_name": "Box", "child_name": "Big", "category_name": "Box", "SP": { "id": 203, "type": 2, "price": 15 }, "added": true }, { "parent_name": "Box", "child_name": "Very Big", "category_name": "Box", "SP": { "id": 203, "type": 1, "price": 15 }, "added": true } ] ], "Sets": [ [ [ { "parent_name": "Drawers", "child_name": "Full", "SP": { "id": 172, "type": 1, "price": 20 } }, { "parent_name": "Drawers", "child_name": "Queen", "SP": { "id": 174, "type": 2, "price": 20 }, "added": true } ], [ { "parent_name": "Drawers", "child_name": "Full", "SP": { "id": 172, "type": 1, "price": 20 } }, { "parent_name": "Drawers", "child_name": "Queen", "SP": { "id": 174, "type": 2, "price": 20 }, "added": true } ] ] ] } } ]; const arry = []; const nested = data.reduce((obj,value) => { Object.values(value.items).forEach((inner,k) => { if(Array.isArray(inner)){ inner.forEach((inner,key) => { if(Array.isArray(inner)){ inner.forEach((inner,key) => { if(Array.isArray(inner)){ inner.forEach(inner => { if(inner.added && inner.SP.type === 2){ arry.push({"cat_id":value.cat_id,"room_id":value.rm_id,...inner}) }; }) } if(inner.added && inner.SP.type === 2){ arry.push({"cat_id":value.cat_id,"room_id":value.rm_id,...inner}) }; }) } }) } }); return arry; },[]); console.log(nested);
如果有人想完成它,這是一個部分完整的答案。 它沒有連接外部屬性,並且有一些嵌套的圓形對象
輸入
let arr = [ { "cat_id": 38, "rm_id": 1, "items": { "Box": [ [ { "parent_name": "Box", "child_name": "Small", "category_name": "Box", "SP": { "id": 203, "type": 2, "price": 15 }, "added": true }, { "parent_name": "Box", "child_name": "Big", "category_name": "Box", "SP": { "id": 203, "type": 2, "price": 15 }, "added": true }, { "parent_name": "Box", "child_name": "Very Big", "category_name": "Box", "SP": { "id": 203, "type": 1, "price": 15 }, "added": true } ] ] } }, { "cat_id": 37, "rm_id": 1, "items": { "Box": [ [ { "parent_name": "Box", "child_name": "Small", "category_name": "Box", "SP": { "id": 203, "type": 1, "price": 15 }, "added": true }, { "parent_name": "Box", "child_name": "Big", "category_name": "Box", "SP": { "id": 203, "type": 2, "price": 15 }, "added": true }, { "parent_name": "Box", "child_name": "Very Big", "category_name": "Box", "SP": { "id": 203, "type": 1, "price": 15 }, "added": true } ] ], "Sets": [ [ [ { "parent_name": "Drawers", "child_name": "Full", "SP": { "id": 172, "type": 1, "price": 20 } }, { "parent_name": "Drawers", "child_name": "Queen", "SP": { "id": 174, "type": 2, "price": 20 }, "added": true } ], [ { "parent_name": "Drawers", "child_name": "Full", "SP": { "id": 172, "type": 1, "price": 20 } }, { "parent_name": "Drawers", "child_name": "Queen", "SP": { "id": 174, "type": 2, "price": 20 }, "added": true } ] ] ] } } ]
const isObject = function(obj){
return obj === Object(obj);
}
const myFunc = function(result, value){
if (Array.isArray(value)){
value.reduce(myFunc, result)
// value.filter(function(child) {
// return ! Array.isArray(child)
// })
}
if (isObject(value)) {
Object.values(value).reduce(myFunc, result)
Object.keys(value).forEach(child => {
if (child != "SP" && isObject(value[child])){
delete value[child]
}
})
}
//for(let i = 0; i<result.length; i++){
// result[i] = {...result[i], ...value}
//}
if (value.SP && value.added === true && value.SP.type === 2){
result.push(value)
}
return result
}
newArr = arr.reduce(myFunc, [])
Output
[{ added: true, category_name: "Box", child_name: "Small", parent_name: "Box", SP: { id: 203, price: 15, type: 2 } }, { added: true, category_name: "Box", child_name: "Big", parent_name: "Box", SP: { id: 203, price: 15, type: 2 } }, [circular object Object], [circular object Object], { added: true, category_name: "Box", child_name: "Big", parent_name: "Box", SP: { id: 203, price: 15, type: 2 } }, [circular object Object], { added: true, child_name: "Queen", parent_name: "Drawers", SP: { id: 174, price: 20, type: 2 } }, [circular object Object], { added: true, child_name: "Queen", parent_name: "Drawers", SP: { id: 174, price: 20, type: 2 } }, [circular object Object]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.