Ken*_*Men 16 javascript json object
我正在尝试从现有对象中获取一些数据并将其分组为新对象.我遇到的问题是检查对象密钥是否存在,以便我可以创建一个新的,或将数据附加到现有的.
我发现了一些类似的问题,但没有一个答案有效,所以我有点卡住了.它总是最终发现它不存在并创建重复键.
我有以下代码,xxx
我需要在哪里检查密钥是否存在:
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
});
}
}
Run Code Online (Sandbox Code Playgroud)
在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'
}
]
Run Code Online (Sandbox Code Playgroud)
pla*_*alx 34
实现此目的的最佳方法是依赖于in
操作符返回一个布尔值的事实,该值指示键是否存在于对象中.
var o = {k: 0};
console.log('k' in o); //true
Run Code Online (Sandbox Code Playgroud)
但这不是你唯一的问题,你没有任何查询对象可以让你检查密钥是否已经存在.不使用数组,而是使用普通对象.
var groups = {};
Run Code Online (Sandbox Code Playgroud)
然后,而不是groups.push(...)
,做groups[group_key] = group_details;
然后,您可以通过执行来检查该组是否存在 if (group_key in groups) {}
归档时间: |
|
查看次数: |
77184 次 |
最近记录: |