![](/img/trans.png)
[英]Check if array of objects, which also contain nested arrays with objects, are the same, if so, combine them into one object and add the keys together
[英]Accessing nested keys in object and compare them to other object keys, but the 2nd one is an array of objects
所以我在嘗試比較和訪問嵌套對象中的數據並將 tham 與帶有對象的數組進行比較時遇到了這個問題(這不是嵌套的)。
模擬它看起來像這樣:
const members = [
{
name: 'Angelica',
age: '25',
sex: 'female',
phone: '123456789',
},
{
name: 'Dominic',
age: '30',
sex: 'male',
phone: '987654321',
},
];
const updates = {
123456789: {
date: '12.02-2019',
warnings: {},
errors: {}
},
987654321: {
date: '20.01-2020',
warnings: {
somethinghere: {
warning1: 'warning',
allok: 'yes',
}
},
errors: {},
}
}
所以首先我需要檢查成員中的電話是否等於對象中的鍵,然后我需要找出是否有任何警告(警告不為空)。 我試圖循環使用 forEach 作為members.forEach((member) => { if (Object.keys(updates) === member.name) }
但它似乎不起作用。信息像警告更新最初並未聲明,但會在某些更改后出現在狀態中。
您可以使用map
和Object.keys
方法。
const members = [ { name: 'Angelica', age: '25', sex: 'female', phone: '123456789', }, { name: 'Dominic', age: '30', sex: 'male', phone: '987654321', }, ]; const updates = { 123456789: { date: '12.02-2019', warnings: {}, errors: {} }, 987654321: { date: '20.01-2020', warnings: { somethinghere: { warning1: 'warning', allok: 'yes', } }, errors: {}, } } var result = members.map(({phone}) => ({phone, hasWarnings: Object.keys(updates[phone].warnings).length > 0}) ); console.log(result);
Object.keys(updates)
是一個數組,所以你應該使用includes
:
if (Object.keys(updates).includes(member.phone) )
const members = [ { name: 'Angelica', age: '25', sex: 'female', phone: '123456789', }, { name: 'Dominic', age: '30', sex: 'male', phone: '987654321', }, ]; const updates = { 123456789: { date: '12.02-2019', warnings: {}, errors: {} }, 987654321: { date: '20.01-2020', warnings: { somethinghere: { warning1: 'warning', allok: 'yes', } }, errors: {}, } } members.forEach(member => { Object.entries(updates).forEach(([key, value]) => { if(key === member.phone && JSON.stringify(value.warnings) === '{}'){ console.log(key) } }) })
( JSON.stringify(obj) === '{}'
檢查對象是否為空)
你可以做const update = updates[member.phone];
查看更新是否可用,如果更新密鑰集中不存在這樣的電話,則這將是未定義的。
然后const warnings = Object.keys(update.warnings);
會給你警告鍵列表。
const members = [{ name: 'Angelica', age: '25', sex: 'female', phone: '123456789', }, { name: 'Dominic', age: '30', sex: 'male', phone: '987654321', }, ]; const updates = { 123456789: { date: '12.02-2019', warnings: {}, errors: {} }, 987654321: { date: '20.01-2020', warnings: { somethinghere: { warning1: 'warning', allok: 'yes', } }, errors: {}, } } members.forEach((member) => { const update = updates[member.phone]; if (update) { const warnings = Object.keys(update.warnings); console.log(warnings); if (warnings.length === 0) { console.log(`no warnings for member ${member.name}'s update`); } } else { console.log(`no updates for member ${member.name}`); } });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.