高效篩選json嵌套數組:精準定位特定status值
處理JSON數據時,常常需要從嵌套數組中提取符合特定條件的數據。本文演示如何從包含嵌套數組的JSON數據中,精確篩選出status值為0和1的元素。
示例JSON數據:
const data = [ { "id": 1, "name": "alice", age: [{ id: 4, status: 0 }] }, { "id": 2, "name": "bob", age: [{ id: 4, status: 1 }] }, { "id": 3, "name": "charlie", age: [{ id: 4, status: 1 }] } ];
目標是從data數組中,分別篩選出age數組內包含status為0和status為1的對象。
JavaScript的Filter()和some()方法可以實現此目標。filter()創建包含通過測試元素的新數組;some()測試數組中至少一個元素是否通過測試。
首先,篩選status為0的元素:
const status0 = data.filter(item => item.age.some(a => a.status === 0)); console.log(status0);
filter()遍歷data數組中的每個對象。對于每個對象,some()檢查其age數組中是否存在status為0的元素。如果存在,則該對象添加到status0數組。
接下來,篩選status為1的元素:
const status1 = data.filter(item => item.age.some(a => a.status === 1)); console.log(status1);
此代碼與篩選status為0的代碼類似,僅將a.status === 0替換為a.status === 1。
如果age數組可能包含多個元素,且需要篩選出age數組中包含status為0或1的對象,同時去除age數組中不符合條件的元素,則需要更復雜的處理:
const data = [ { "id": 1, "name": "Alice", age: [{ id: 4, status: 0 }, { id: 5, status: 1 }] }, { "id": 2, "name": "Bob", age: [{ id: 4, status: 1 }, { id: 5, status: 2 }] }, { "id": 3, "name": "Charlie", age: [{ id: 4, status: 1 }, { id: 5, status: 3 }] } ]; const status0 = data.map(item => ({ ...item, age: item.age.filter(a => a.status === 0) })).filter(item => item.age.length > 0); console.log(status0); const status1 = data.map(item => ({ ...item, age: item.age.filter(a => a.status === 1) })).filter(item => item.age.length > 0); console.log(status1);
這段代碼使用map()方法處理每個對象,filter()方法篩選出age數組中符合條件的元素,并使用filter()方法過濾掉age數組為空的對象。
通過這些方法,可以高效地從JSON數據中提取所需的數據集合。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END