我正在尝试从现有对象中获取一些数据并将其分组到一个新对象中。我遇到的问题是检查对象键是否存在,以便我可以创建一个新键,或者将数据附加到现有键。
我发现了一些类似的问题,但没有一个答案有效,所以我有点卡住了。它总是最终发现它不存在并创建重复的键。
我有以下代码,其中 xxx
是我需要检查 key 是否存在的地方:
var groups = [];
for (var i=0; i<something.length; i++) {
var group_key = 'group_'+something[i].group_id;
if (xxx) {
// New group
var group_details = {};
group_details[group_key] = {
group_name: something[i].group_name,
items: [
{ 'name': something[i].name }
]
};
groups.push(group_details);
} else {
// Existing group
groups[group_key].items.push({
'name': something[i].name
});
}
}
我传递的something
非常简单,基本上是以下形式:
[
{
group_id: 3,
group_name: 'Group 3',
name: 'Cat'
},
{
group_id: 3,
group_name: 'Group 3',
name: 'Horse'
},
{
group_id: 5,
group_name: 'Group 5',
name: 'Orange'
}
]
最佳答案
实现此目的的最佳方法是依赖于 in
运算符返回一个 bool 值,该值指示对象中是否存在键。
var o = {k: 0};
console.log('k' in o); //true
但这不是您唯一的问题,您没有任何查找对象可以让您检查 key 是否已经存在。不使用数组,而是使用普通对象。
var groups = {};
然后代替 groups.push(...)
,执行 groups[group_key] = group_details;
然后您可以通过执行 if (group_key in groups) {}
关于javascript - 检查对象中是否存在对象键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18922965/