Javascript将数组转换为对象

Javascript将数组转换为对象,javascript,node.js,redis,Javascript,Node.js,Redis,我已经使用node和redis有一段时间了。我遇到的问题是,当我在redis中使用hgetall时,它返回一个对象 { uid: '6203453597', first_name: 'Name', last_name: 'Surname', gender: 'male', email: 'email@email.com', status: '1', chips: '4002043' } 但是,当我使用hmget并指定要获取的字段时,它会返回一

我已经使用node和redis有一段时间了。我遇到的问题是,当我在redis中使用hgetall时,它返回一个对象

 { uid: '6203453597',
    first_name: 'Name',
    last_name: 'Surname',
    gender: 'male',
    email: 'email@email.com',
    status: '1',
    chips: '4002043' } 
但是,当我使用hmget并指定要获取的字段时,它会返回一个数组

[ '6203453597', 'Name', 'Surname', '4002043' ]
所以,我想将数组转换为关联数组,就像第一个数组一样。从代码和性能角度来看,最好的转换方法是什么

我还在redis中使用multi命令。在第一个示例中,它返回一个对象数组,在第二个示例中,它返回一个数组数组。因此,重要的是它是高效和自动的,而不是手动的

YUI的dataschema函数就是我要找的。但是,它需要在node.js上完成,我使用的唯一第三方实用工具是下划线。有没有什么简单的方法可以做到这一点,或者我需要手动转换成一个圈的下摆


谢谢,

我已经构建了一些类似于您想要的东西,只是为了
排序
命令。这应该适用于
hmget

function getFieldsAsObject(key, fields, next) {
    function mapResults(err, values) {
        if(err)
            return next(err);

        var result = {};
        for(var i = 0, len = fields.length; i < len; i++) {
            result[fields[i]] = values[i];
        }
        next(null, result);
    }

    var args = [].concat(key).concat(fields).concat(mapResults);
    client.hmget.apply(client, args);
}
示例用法:

var client = require("redis").createClient()
  , multi = client.multi();

multi.hmget("a.1", "foo", "bar");
multi.hmget("a.2", "foo", "bar");
multi.exec(mapResults(["foo", "bar"], function(err, results) {
    // results will be [{foo: 17, bar: 4711}, {foo: 42, bar: 3.1415926535897932384626433}]
    console.log(results);
}));

如果要将对象转换为数组非常简单:

var myarray = new Array();
for(var attrName in myobj){
    myarray.push(myobj[attrName]);
}

使用下划线函数和,可以从1变为2

_.values(_.pick({ uid: '6203453597',
    first_name: 'Name',
    last_name: 'Surname',
    gender: 'male',
    email: 'email@email.com',
    status: '1',
    chips: '4002043' },"uid","first_name","last_name","chips"))

["6203453597", "Name", "Surname", "4002043"]
或者你可以从2到1

_.object(["uid","first_name","last_name","chips"],[ '6203453597', 'Name', 'Surname', '4002043' ])

{uid: "6203453597", first_name: "Name", last_name: "Surname", chips: "4002043"}

当然,只要访问数组元素并将其指定给对象属性就没有问题了。您正在寻找内置解决方案吗?“因此,高效、自动而不是手动是很重要的。”实现自动的唯一方法是,您可以获得一些信息,告诉您哪些数组索引映射到哪些属性名称。除非你有办法查询它,否则你不能使它“自动”。@Felix,是的,我这样做没有任何问题,但是我有一个数组。所以,如果我能以某种方式给出一个模式并应用它会更好。我正在寻找一个内置的(或更简单的解决方案)解决方案,就像YUI的dataschema函数一样,如果它存在的话。@Crowder,是的,这正是我想要做的。我只想写更少的代码并提高可维护性,而不是做递归循环。因为我经常使用hmget函数,所以最好知道更好的解决方案。不,他想将数组转换为对象。
_.object(["uid","first_name","last_name","chips"],[ '6203453597', 'Name', 'Surname', '4002043' ])

{uid: "6203453597", first_name: "Name", last_name: "Surname", chips: "4002043"}