我有一个这样设计的对象。我想在日期(2020-04-01)内获取对象的键,但是当我使用Object.keys(obj.array[0])它时,它会返回一个空数组。我尝试使用该getOwnPropertyNames()函数,但它仍然返回一个空数组。我这样做是这样的:该对象由另一个函数传递给该函数。function formatAsString(obj){ let array = Object.keys(obj); for(i=0;i<array.length;i++){ let data = Object.keys(obj[array[i]]); console.log(data); for(x=0;x<Object.keys(data).length;x++){ let date = array[x]; let activity = data["activity"]; let type = data["type"]; let company = data["company"]; let string = `${type}( Activity : ${activity} | Comapny : ${comapny} )`; console.log(string); } }}我设法制作了另一个功能function formatAsString(obj){ let values = Object.values(obj); let dates = Object.keys(obj); let array = Object.keys(values); let activityObj = {}; for(i=0;i<array.length;i++){ let keys = Object.keys(values[array[i]]); let data = values[array[i]]; for(x=0;x<keys.length;x++){ let date = dates[i]; let type = data[keys[x]].type; let activity = data[keys[x]].activity; let company = data[keys[x]].company; let string = `${type} -> ${activity}, ${company} <br>`; activityObj[date + x] = string; } } console.log(activityObj);}当我在控制台中将它与相同的对象一起使用时,此功能有效,但当我将其与该功能一起使用时无效。它返回我一个空数组对象activityObj
1 回答
慕标琳琳
TA贡献1830条经验 获得超9个赞
获得答案的最佳方法是提供所有详细信息,解释您在开始时遇到的问题。输入数据示例,输出数据格式等。当然,如果你真的需要帮助。无论如何,我很确定这就是您要寻找的东西(我通过 reduce 实现了它,因为它比 for 循环更好地处理数组。
function formatAsString (obj) {
return Object.keys(obj).reduce((str, date) => {
const activities = Object.keys(obj[date]).reduce((strDate, key) => {
const act = obj[date][key]
return `${strDate} ${act.type}( Activity : ${act.activity} | Company : ${act.company} )\n`
}, '')
return `${str}${date}:\n${activities}`
}, '')
}
添加回答
举报
0/150
提交
取消
