如何高效篩選JSON嵌套數(shù)組中特定status值的元素?

如何高效篩選JSON嵌套數(shù)組中特定status值的元素?

高效篩選json嵌套數(shù)組:精準(zhǔn)定位特定status值

處理JSON數(shù)據(jù)時,常常需要從嵌套數(shù)組中提取符合特定條件的數(shù)據(jù)。本文演示如何從包含嵌套數(shù)組的JSON數(shù)據(jù)中,精確篩選出status值為0和1的元素。

示例JSON數(shù)據(jù):

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 }] } ];

目標(biāo)是從data數(shù)組中,分別篩選出age數(shù)組內(nèi)包含status為0和status為1的對象

JavaScriptFilter()和some()方法可以實現(xiàn)此目標(biāo)。filter()創(chuàng)建包含通過測試元素的新數(shù)組;some()測試數(shù)組中至少一個元素是否通過測試。

首先,篩選status為0的元素:

const status0 = data.filter(item => item.age.some(a => a.status === 0)); console.log(status0);

filter()遍歷data數(shù)組中的每個對象。對于每個對象,some()檢查其age數(shù)組中是否存在status為0的元素。如果存在,則該對象添加到status0數(shù)組。

接下來,篩選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數(shù)組可能包含多個元素,且需要篩選出age數(shù)組中包含status為0或1的對象,同時去除age數(shù)組中不符合條件的元素,則需要更復(fù)雜的處理:

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數(shù)組中符合條件的元素,并使用filter()方法過濾掉age數(shù)組為空的對象。

通過這些方法,可以高效地從JSON數(shù)據(jù)中提取所需的數(shù)據(jù)集合。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊11 分享