【问题标题】:Processing JavaScript complex object处理 JavaScript 复杂对象
【发布时间】:2014-08-22 00:05:18
【问题描述】:

我有以下 JavaScript 数组 var arr = ['1', '2', '3', '4' ];

我想将此对象转换为单个字符串,以便它产生以下输出:1 + 2 + 3 + 4。这在 join 函数的帮助下运行良好。

arr.join(' + ') 产生所需的输出。

问题是我的简单数组现在被转换成复杂对象了:

var data = [
{
    "key": "1",
    "IsData": true
},
{
    "key": "2",
    "IsData": false
},
{
    "key": "3",
    "IsData": true
},
{
    "key": "4",
    "IsData": false
}
];

我可以循环这个对象并产生想要的结果1 + 2 + 3 + 4

我想知道是否有更聪明的方法(没有循环)来获得所需的输出。可以通过使用 lodash 或 jquery 之类的库

【问题讨论】:

    标签: javascript jquery mustache lodash


    【解决方案1】:

    试试这个:

    data.reduce(function(pstr, co) {
        return pstr+" + "+co.key; 
    }, "").slice(3);
    

    【讨论】:

      【解决方案2】:

      如果您已经在使用 jQuery,它也有一个 map() 函数:

      var output = $.map(data, function(obj) { return obj.key; }).join(' + ');
      

      jsFiddle Demo

      【讨论】:

      • 感谢科里的快速帮助。将 Rajaprabhu Aravindasamy 的答案标记为正确答案,并在他首先给出答案时投票赞成您的答案。
      • 不客气!我唯一要提醒的是Array.prototype.map 在 IE 8 及更低版本中不存在,因此请注意,如果您不幸有符合该标准的观众。 jQuery 将为您弥补这一差距。
      【解决方案3】:

      试试:

      var data = [ { "key": "1", "IsData": true }, { "key": "2", "IsData": false }, { "key": "3", "IsData": true }, { "key": "4", "IsData": false } ];
      var outputString = "";
      for(var i = 0; i < data.length; i++) {
          outputString += data[i].key;
      }
      outputString = outputString.split("").join(" + ");
      alert(outputString); // 1 + 2 + 3 + 4
      

      Fiddle.

      【讨论】:

      • -1: I can loop over this object and produce the desired result...I want to know if there is a smarter way (WITHOUT LOOPING) to get the desired output: 你刚刚复制了 OP 所说的他们已经在做的事情。
      【解决方案4】:

      尝试使用Array.prototype.map()

      data.map(function(val){ return val.key }).join(' + ');
      

      DEMO

      【讨论】:

      • 这很棒。感谢您的快速帮助
      猜你喜欢
      • 1970-01-01
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多