我正在嘗試從物件中洗掉條目,以便它只包含陣列中的條目。所以我有一個required陣列:
const required = ['accountNumber', 'packRequested', 'collectionDate']
還有一個touchedFields物件:
const touchedFields = {
accountNumber: true,
sortCode: false,
account: true,
collectionDate: false,
packRequested: false
}
這就是我所追求的:
const touchedFields = {
accountNumber: true,
collectionDate: false,
packRequested: false
}
如何做到這一點?
我嘗試創建一個陣列輸出(因為我不能做物件),回圈遍歷每個物件條目,回圈遍歷每個陣列鍵,比較值并在值匹配時推送到新陣列:
let newArr = []
for (let [key, value] of Object.entries(requiredFields)) {
Object.keys(touchedFields).forEach((cur) => {
if (cur == value) {
newArr.push({cur: value})
}
})
}
console.log(newArr)
但即使這樣也不能正確設定值,因為它將鍵設定為 cur 而不是實際的 cur 變數:
[{cur: 'accountNumber'}, {cur: 'packRequested'}, {cur: 'collectionDate'}]
任何幫助將不勝感激。
uj5u.com熱心網友回復:
如果要更改原始物件,可以遍歷鍵并洗掉不在所需陣列中的鍵。
const required = ['accountNumber', 'packRequested', 'collectionDate']
const touchedFields = {
accountNumber: true,
sortCode: false,
account: true,
collectionDate: false,
packRequested: false
}
const pruneObject = (obj, keys) => Object.keys(obj).forEach(
key => !required.includes(key) && delete obj[key]
);
pruneObject(touchedFields, required);
console.log(touchedFields);
如果您不想更改原始物件,您可以遍歷陣列并從中構建一個新物件。
const required = ['accountNumber', 'packRequested', 'collectionDate']
const touchedFields = {
accountNumber: true,
sortCode: false,
account: true,
collectionDate: false,
packRequested: false
}
const inclusivePick = (obj, keys) => Object.fromEntries(
keys.map(key => [key, obj[key]])
);
const result = inclusivePick(touchedFields, required);
console.log(result);
uj5u.com熱心網友回復:
const required = ['accountNumber', 'packRequested', 'collectionDate']
const touchedFields = {
accountNumber: true,
sortCode: false,
account: true,
collectionDate: false,
packRequested: false
}
let result = Object.fromEntries(
Object.entries(touchedFields)
.filter(([k,v]) => required.includes(k))
)
console.log(result)
uj5u.com熱心網友回復:
使用Array.reduce方法
const required = ['accountNumber', 'packRequested', 'collectionDate']
const touchedFields = {
accountNumber: true,
sortCode: false,
account: true,
collectionDate: false,
packRequested: false
}
const result = required.reduce((acc, key) => {
acc[key] = touchedFields[key];
return acc;
}, {});
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/377964.html
標籤:javascript 数组 目的
