javascript - 检查对象中是否存在对象键

标签 javascript json object

我正在尝试从现有对象中获取一些数据并将其分组到一个新对象中。我遇到的问题是检查对象键是否存在,以便我可以创建一个新键,或者将数据附加到现有键。

我发现了一些类似的问题,但没有一个答案有效,所以我有点卡住了。它总是最终发现它不存在并创建重复的键。

我有以下代码,其中 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/

相关文章:

javascript - 如何将 .fla 转换为 html5

javascript - 如何在 Angular 6 的 Angular Material 对话框中将数据传递给 afterClosed()

javascript - 如何通过 javaScript 从 json 访问数据?

object - 在需要构建的对象中设置字段

python类对象定义

html - SVG 使用 <embed> : css not picking up styles

javascript - 使用 Mootools 获取元素内的特定元素

javascript - 如何在 Angular 中创建返回 json 的作用域函数?

python - 试图从文本文件中解析 twitter json

javascript - javascript 在对象数组中查找元素