JavaScript:如何使用两个相同的键迭代对象(并获取两个值) [英] JavaScript: How to iterate object with two the same keys (and get two values)

查看:80
本文介绍了JavaScript:如何使用两个相同的键迭代对象(并获取两个值)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

var obj = { key: value1, key: value2}

如果我使用简单循环,我想迭代它并得到(key和value1)和(key和value2)

I would like to iterate it and get pars of (key and value1) and (key and value2)

的分析:

for (var i in obj){
 console.log(obj[i])
}

我得到:
键值2
键值2

I got: key value2 key value2

所以obj [i]总是拿最后一个键

so obj[i] always take last key

推荐答案

JS对象中的键必须是唯一的。

Keys in JS objects must be unique.

会发生什么,是:

var obj = {
    key : value1
}

设置 obj ['key'] value1

键的后续声明:value2 覆盖您之前的。

可能的解决方案你的问题:

var obj = {
    key : [value1, value2]
}

for (var i in obj)
{
    if (obj[i] instanceof Array)
    {
        for (var k; k < obj[i].length; k++)
        {
            console.log(obj[i][k])
        }
    }
    else
    {
        console.log(obj[i]);
    }
}






另一个可能更优雅的解决方案是修改存储数据的方式,如下所示:


Another, possibly more elegant, solution would be to modify the way you store your data like so:

var obj = [
    { key : 'SomeKey'     , value : 'foo' },
    { key : 'SomeKey'     , value : 'bar' },
    { key : 'SomeOtherKey', value : 'baz' }
];

这显然允许使用相同密钥的多个条目。查询可以在以下某处进行:

This obviously allows for multiple entries with the same key. The querying could be done somewhere along these lines:

values = [];
for (var i = 0; i < obj.length; i++)
{
    if (obj[i].key === 'SomeKey')
    {
        values.push(obj[i].value);
    }
}

console.log(values);

这篇关于JavaScript:如何使用两个相同的键迭代对象(并获取两个值)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆