【问题标题】:CoffeeScript : Array of Objects to an Object [closed]CoffeeScript:对象数组到对象[关闭]
【发布时间】:2014-06-06 07:13:40
【问题描述】:

我有一个对象数组

arrayObj = [
{ "a" : [1,2,3,4]} , { "b" : "Hello World"} ]

我也想转换这个,

obj = { "a" :  [1,2,3,4] , "b" : "Hello World" } 

【问题讨论】:

  • 你到底卡在哪里了?你不知道如何遍历数组吗?或者如何为对象添加属性?这两个要么在 JS 教程中解释过,要么在之前被问过。
  • @FelixKling 我相信 OP 停留在“必须编码”阶段。他正在寻找的是编写该代码的人,以便他可以解决他的“必须编码”问题。 OP 问题的一种可能解决方案是完整的工作代码 OP 可以复制粘贴到他的生产应用程序中,读取所述代码是可选的。
  • 我只想知道,像 underscore.js 这样的库中是否有一个函数可以实现这一点。如果您发现问题很蹩脚,请道歉。我知道如何遍历一个数组,我想这里查看这篇文章的每个人都会知道这一点。但有时会有更聪明的方法来做人们可以通过此类论坛学习的事情。无论如何,我向你们道歉......
  • “我只想知道,像 underscore.js 这样的库中是否有一个函数可以实现这个” 那你为什么不问呢?答案是不。您必须以一种或另一种方式遍历数组并向对象添加属性。
  • 我只想知道,像 underscore.js 这样的库中是否有一个函数可以实现这一点——实际上,有:_.extendobj = _.extend {}, arrayObj....

标签: javascript coffeescript


【解决方案1】:

您可以使用数组的 Reduce 方法。 示例

arrayObj.reduce(
  function(prevValue,curValue){
    prevValue[Object.keys(curValue)[0]] = curValue[Object.keys(curValue)[0]];
    return prevValue;
  }
,
 {}
)

注意:如果在初始数组的不同对象中重复相同的属性名称,这将覆盖属性值(在结果上)。现在也仅适用于第一个属性。可以扩展到每个包含对象的所有键。

【讨论】:

    猜你喜欢
    • 2012-08-27
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多