将键值对象转换为仅值数组

时间:2015-02-26 14:25:55

标签: javascript arrays json mongodb mongoose

在Javascript中将key : value对象转换为仅值数组的最佳方法是什么?我尝试使用$in执行mongoose查询。据我所知,我需要改变这个:

[ { "key": "54ce3bef2d1ce6a82c90ccc3" }, { "key": "54d290a23eff5da01d05fe53" } ]

到此:

[ "54ce3bef2d1ce6a82c90ccc3", "54d290a23eff5da01d05fe53" ]

我应该遍历第一个然后在循环中创建第二个吗?或者我应该使用一些map函数(例如$.map())?执行此操作客户端是否明智,还是应该完成所有工作服务器端?源对象可以增长几千对。

2 个答案:

答案 0 :(得分:1)

对于Array.prototype.map

的已知密钥,您可以快速执行此操作
var arr = [{"key": "54ce3bef2d1ce6a82c90ccc3"}, {"key": "54d290a23eff5da01d05fe53"}];

arr = arr.map(function (e) {return e.key;});
// ["54ce3bef2d1ce6a82c90ccc3", "54d290a23eff5da01d05fe53"]

如果密钥未知,但您知道每个项目只有一个,请与for..in

结合使用
arr = arr.map(function (e) {
    var key;
    for (key in e) // may also want to Object.prototype.hasOwnProperty here
        return e[key];
});
// ["54ce3bef2d1ce6a82c90ccc3", "54d290a23eff5da01d05fe53"]

答案 1 :(得分:1)

艰难的电话,但我的第一个倾向是做一个循环,但你是否要担心重复?以下不考虑...

var arrayToStoreValues = [];
$.each(queryReturnSet,function(i,e){
     arrayToStoreValues[i] = e.key;
});