【问题标题】:Transform a key, value object to values only array将键、值对象转换为仅值数组
【发布时间】:2015-04-28 23:27:02
【问题描述】:

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

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

到这里:

[ "54ce3bef2d1ce6a82c90ccc3", "54d290a23eff5da01d05fe53" ]

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

【问题讨论】:

    标签: javascript arrays json mongodb mongoose


    【解决方案1】:

    艰难的调用,但我的第一个倾向是做一个循环,但你不必担心重复吗?以下不考虑这一点...

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

    【讨论】:

    • 无重复。我决定使用arr.map 方法。但是从性能的角度来看,仍然不确定哪个更好。也不确定在角度控制器或节点端执行此操作更好。
    【解决方案2】:

    您可以使用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"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-25
      • 1970-01-01
      • 1970-01-01
      • 2021-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多