【问题标题】:Combine objects [duplicate]合并对象[重复]
【发布时间】:2013-12-26 00:25:12
【问题描述】:

我有两个对象,例如:

{ Count: 1,
  Items:
   [ { foo: [Object],
       name: [Object],
       bar: [Object],
       baz: [Object],
       qux: [Object] } ] }

{ Count: 0, Items: [] }

我需要组合它们并返回一个 JSON 对象。但是,当我尝试这个时,我得到了

"[object Object][object Object]"

代码:

function returnResponse(obj1, obj2) {
            res.statusCode = 200;
            res.setHeader('Content-Type', 'text/plain; charset=UTF-8');
            var returnResult = obj1 + obj2
            res.send(JSON.stringify(returnResult, undefined, 2));
            res.end();
        }

如何让所有对象在浏览器中正确显示?

【问题讨论】:

  • 您希望“组合”结果如何? + 性能字符串连接和对象的默认字符串表示是[object Object]
  • 仅供参考,您似乎将 JavaScript 对象文字(JavaScript 语言语法的结构)与 JSON(一种独立于语言的数据交换格式,如 XML 或 CSV)混淆了。 obj1obj2 是对象,而不是 JSON 对象。 There is no such thing as a "JSON object".
  • @nick4fake:在与他人交流时,能够使用术语非常重要。从上下文中可以清楚地看出 OP 正在谈论 JS 对象,但如果我现在可以教育他们,那么他们就不会在不同的、可能不太明显的环境中犯同样的错误。
  • @Clustermagnet:这是一个 JS 对象(请不要再说 JSON 对象):{}。这是另一个:{ combined: true }。有近乎无限的“单一物体”。这些显然不是您想要的,但对我们来说,您确实想要什么就不太明显了。请编辑您的问题并明确写出您期望的两个示例对象“组合”的结果。
  • 根据接受的答案,您似乎想要一个对象数组。如果您发布了一个您期望输出的示例,这会简单得多。

标签: javascript json node.js restify


【解决方案1】:

我认为您希望将两个对象都作为数组返回:

function returnResponse(obj1, obj2) {
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain; charset=UTF-8');
    var returnResult = [obj1,obj2];
    res.send(JSON.stringify(returnResult, undefined, 2));
    res.end();
}

【讨论】:

  • 我想知道为什么这被否决了:-/
【解决方案2】:

如果你不使用像jQuery这样的JS框架,你需要一个递归合并函数。以this one 为例。

【讨论】:

  • 这是评论,不是答案。
  • 如果您认为现有答案完美地解决了这个问题,您应该标记/投票以将此问题作为重复问题关闭。
【解决方案3】:

您可以使用 jQuery 库的 $.extend 方法。

阅读更多: http://api.jquery.com/jQuery.extend/

没有 jQuery,单行:

for (var attrname in obj2) { obj1[attrname] = obj2[attrname]; }

另外,这是重复的: How can I merge properties of two JavaScript objects dynamically?

【讨论】:

  • OP 似乎没有使用 jQuery。如果它是重复的,则标记/投票以将其关闭。 编辑: 你做了。
  • 我写道,这可以用 jQuery 来实现,但我没有写这是唯一的方法。此外,我将问题标记为重复,并给出了 OP 的链接。
  • 一般来说,如果问题中提到或标签中列出了某个库,您应该只提出使用某个库的解决方案。
  • @FelixKling 通常,当您提出诸如“一般而言,您应该只使用某个库提出解决方案,如果该库在问题中提及或在标签中列出”之类的规则时,您应该提供链接到规则。
  • @Louis:抱歉,我无法提供链接。但是,如果您将鼠标悬停在 javascript 标记上,您会在标记说明中找到以下内容:“除非还包含框架/库的标记,否则需要纯 JavaScript 答案。”跨度>
猜你喜欢
  • 2016-10-03
  • 2018-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-04
  • 1970-01-01
  • 1970-01-01
  • 2017-09-22
相关资源
最近更新 更多