使用数组中的字符串键访问JavaScript对象
Accessing JavaScript objects with string key within an array
我有以下数据结构:
var settings = {
notifications: [
{
'logout' : {
icon: 'fa fa-sign-out',
text: [
{heading: 'Logout'},
{body: 'You have unsaved data. Are you sure you want to log out?'},
]
}
},
{
'delete' : {
icon: 'fa fa-times',
text: [
{heading: 'Delete'},
{body: 'This operation can not be undone. Are you sure you want to delete?'},
]
}
},
],
};
当我不知道注销对象在通知数组中的位置时,如何检索logout.icon
的值?
此处列出的纯嵌套对象的解决方案为我提供了未定义。
---解决方案
根据Yassine Moustarham的回答,这里是我的可重用函数:
function getProp(arr,key,prop)
{
for(var i=0;i<arr.length;i++)
{
if(arr[i][key])
{
return arr[i][key][prop];
}
}
return false;
};
var icon = getProp(settings.notifications, 'logout', 'icon');
感谢Felix Kling的简化建议。
到此为止:如果您确定他们将明确地成为一个名为logout的通知数组元素的成员则该功能将返回他的图标成员
function getIcon()
{
for(i=0;i<settings.notifications.length;i++)
{
if(typeof(settings.notifications[i].logout)!=='undefined')
{
return settings.notifications[i].logout.icon;
}
}
return false;
}
undefined写错了!并认为Felix Kling需要在与"undefined"进行比较之前添加typeof。
您需要递归地迭代对象的属性,直到找到您要查找的密钥:
function findKey(object, key){
if (object.hasOwnProperty(key)) {
// do stuff
console.log('found');
return true;
}
for (var property in object) {
if (typeof object[property]=='object') {
return findKey(object[property], key);
}
}
}
findKey({'bop':{'foo':'bar'}}, 'foo');
相关文章:
- 如何从对象的原型方法访问JavaScript对象属性
- 如何在不知道关键字的情况下访问javascript对象值
- 可以't访问JavaScript函数范围中的变量
- 使用XPath样式访问Javascript JSON对象属性
- 访问javascript文件输入变量的值
- 如何访问Javascript代码中的rails变量
- jQuery.ajax()访问javascript循环中的beforeEnd局部变量
- 从Jade访问javascript库
- PHP/AAJAX-使用PHP中的$_FILES访问javascript文件数组
- 访问Javascript对象-Node.js的作用域问题
- 从HTML中的另一个文件访问javascript方法
- 存在其他参数时访问Javascript事件
- 如何使用Perl访问JavaScript驱动的网页内容
- 访问JavaScript对象中的方法
- 访问 JavaScript 数组值
- 如何在 setinterval 函数中访问 javascript 数组值
- 在 Java 中访问 JavaScript 对象的字段
- 使用传递给函数的值访问 JavaScript 数组
- 使用相同的名称访问Javascript属性
- 无法访问javascript中二维数组中的第二个字段