我想從我的物件中洗掉一些專案:
clientData : {
1111 : [
{ID : 112, name : 'John',age : 23},
{ID : 113, name : 'Doe',age : 21},
{ID : 114, name : 'Stan',age : 24},
],
2222 : [
{ID : 222, name : 'Sara',age : 15},
{ID : 223, name : 'Wiliams',age : 61},
{ID : 224, name : 'Alan',age : 45},
],
}
我要洗掉的資料存盤在 Id 陣列中,如下所示:
[112,223,114]
所以輸出應該是這樣的:
clientData : {
1111 : [
{ID : 113, name : 'Doe',age : 21},
],
2222 : [
{ID : 222, name : 'Sara',age : 15},
{ID : 224, name : 'Alan',age : 45},
],
}
任何幫助請如何實作這一目標?我真的不知道該怎么做,也沒有在互聯網上找到任何解決方案。
uj5u.com熱心網友回復:
回圈遍歷每個物件屬性并根據洗掉 ID 過濾陣列。
let deleteIds = [112,223,114];
for (const data in clientData) {
clientData[data] = clientData[data].filter(list=>!deleteIds.includes(list.ID));
}
console.log(clientData) // prints out your object
uj5u.com熱心網友回復:
我假設您要過濾掉原始物件。因此,您可以通過使用Array.forEach()方法和Array.splice () 來簡單地實作它。
現場演示:
const clientData = {
1111 : [
{ID : 112, name : 'John',age : 23},
{ID : 113, name : 'Doe',age : 21},
{ID : 114, name : 'Stan',age : 24},
],
2222 : [
{ID : 222, name : 'Sara',age : 15},
{ID : 223, name : 'Wiliams',age : 61},
{ID : 224, name : 'Alan',age : 45},
]
};
const invalidValues = [112, 223, 114];
Object.keys(clientData).forEach(key => {
clientData[key].forEach((obj, index) => {
if (invalidValues.includes(obj.ID)) {
clientData[key].splice(index, 1);
}
})
});
console.log(clientData);
uj5u.com熱心網友回復:
您可以使用Array.reduce()withArray.filter()從客戶端陣列中洗掉專案。
我建議創建一個Set來包含要洗掉的 id。這將使查找比使用陣列更有效(使用Set.has)
const clientData = { 1111 : [ {ID : 112, name : 'John',age : 23}, {ID : 113, name : 'Doe',age : 21}, {ID : 114, name : 'Stan',age : 24}, ], 2222 : [ {ID : 222, name : 'Sara',age : 15}, {ID : 223, name : 'Wiliams',age : 61}, {ID : 224, name : 'Alan',age : 45}, ], }
const idsToDelete = new Set([112,223,114]);
const result = Object.keys(clientData).reduce((acc, key) => {
acc[key] = clientData[key].filter(({ID}) => !idsToDelete.has(ID));
return acc;
}, {});
console.log('Result:', result)
.as-console-wrapper { max-height: 100% !important; }
uj5u.com熱心網友回復:
您可以使用 for....in 回圈回圈您的 clientData 物件。
let clientData = {
1111 : [
{ID : 112, name : 'John',age : 23},
{ID : 113, name : 'Doe',age : 21},
{ID : 114, name : 'Stan',age : 24},
],
2222 : [
{ID : 222, name : 'Sara',age : 15},
{ID : 223, name : 'Wiliams',age : 61},
{ID : 224, name : 'Alan',age : 45},
],
};
const dataToDelete = [112, 223, 114];
for (const key in clientData) {
clientData[key].forEach((data,index) =>{
if (dataToDelete.includes(data.ID)){
clientData[key].splice(index,1)
}
})
}
console.log(clientData);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/493996.html
標籤:javascript 数组 目的
上一篇:批量更新mysql表并從datagridview計算值。VB.NET
下一篇:根據id查找和替換陣列中的元素
