【问题标题】:Returning multiple objects from a function从函数返回多个对象
【发布时间】:2020-05-28 07:57:09
【问题描述】:

在我的代码中,我希望函数wrapInObject 接受两个参数,并将它们封装到一个返回的对象中。

我的代码:

let FirstObject = {
    k: 'FirstObject'
}
let SecondObject = {
    l: 'SecondObject'
}

let wrapInObject = function(FirstObject, SecondObject){
    return [FirstObject, SecondObject]

}

wrapInObject('FirstObject', 'SecondObject') ska 应该返回一个类似{ k: 'FirstObject', l: 'SecondObject' }. 的对象

但我收到了一些错误:

index.js
    ✓ exists
    ✓ is valid JavaScript
    ✓ defines wrapInObject of the type Function
    1) defines wrapInObject such that it returns an object when called with the arguments 'FirstObject' and 'SecondObject'
    2) defines wrapInObject such that it returns an object with the same content as { k: 'FirstObject', l: 'SecondObject' } when called with the arguments 'FirstObject' and 'SecondObject'
    3) defines wrapInObject such that it returns the correct value when called with some other number arguments

我的代码有什么问题?

【问题讨论】:

  • "定义 wrapInObject 以便在使用参数 'FirstObject' 和 'SecondObject' 调用时返回一个对象" 不管这是什么课程或教程,坦率地说,它似乎不是很好。您问题中引用的问题描述含糊不清,错误列表似乎将字符串称为对象。
  • @Andreas - 我不这么认为,但请看我上面的评论,整个作业含糊不清,措辞不佳。
  • @Andreas - 但我应该让它关闭,即使重复可能不正确。 A)它可能是,B)这个问题无论如何都不应该公开。我的错。 :-)

标签: javascript function object


【解决方案1】:

您似乎想要合并这些对象。

let wrapInObject = function(FirstObject, SecondObject){
    return {...FirstObject, ...SecondObject}
}

至于第三个测试用例,你冷做

let wrapInObject = function(...objects){
    return objects.reduce((acc, object) => {...acc, ...object}, {})
}

【讨论】:

  • 我不认为这是关于合并对象。请注意,参数被描述为 strings.
  • @T.J.Crowder 看着他的测试用例我想不出其他解决方案
  • 使用第一个sn-p,只剩下最后两个错误。你能详细解释一下第二个sn-p吗?
  • @left4read123 第二个 sn-p 接受任意数量的参数,假设它们是对象,然后将所有参数合并为一个对象
  • @left4read123 你也可以发布测试用例的输入和输出吗?
【解决方案2】:

您的问题中引用的作业似乎含糊不清,措辞不佳,您描述的错误似乎将字符串称为对象。这使得提供帮助变得困难(并且可能很难完成任务!)。

首先,问题是您要返回一个数组,但分配要求您返回一个具有属性kl 的对象。而不是:

return [FirstObject, SecondObject]; // <===== Incorrect

返回具有所请求属性(kl)的对象,其中 k 设置为 FirstObjectl 设置为 SecondObject。我不会编写可以执行此操作的代码,因为在我看来,无论是谁给你设置了这个任务,都希望 编写那个代码。

第二个问题是您定义了两个不需要的对象(代码顶部的对象)。

【讨论】:

  • Primarily, the problem is you're returning an array, but the assignment asks you to return an object 他们的意思是 Array 或 'object' 中的 'object' 因为在 JavaScript 中,数组也是对象吗?
  • @RahulDwivedi - 你遗漏了我句子的一个重要部分:"...但是作业要求你返回一个对象,其属性为k 和@ 987654333@" ;-) 但是考虑到分配的明显级别,我怀疑当他们说“对象”时他们的意思是“数组”。数组确实是对象,但这是您通常稍后会介绍的内容。
  • with the properties k and l" ...啊,明白了! “虽然没有故意错过这一点”:D
【解决方案3】:

问题是您在 this 方法中传递了 strings 而不是 object。解决了这个问题。

let FirstObject = {
    k: 'FirstObject'
}
let SecondObject = {
    l: 'SecondObject'
}

let wrapInObject = function(FirstObject, SecondObject){
    return [FirstObject, SecondObject]

}
console.log(wrapInObject(FirstObject, SecondObject))

【讨论】:

    【解决方案4】:
    let FirstObject = {
    k: 'FirstObject'    
    }
    let SecondObject = {
    l: 'SecondObject'
    }
    
    let wrapInObject = function(FirstObject, SecondObject){
    
        return {FirstObject, SecondObject}
        }
    

    只返回最后两个错误:

    defines wrapInObject such that it returns an object with the same content as { k: 'FirstObject', l: 'SecondObject' } when called with the arguments 'FirstObject' and 'SecondObject'
    
    defines wrapInObject such that it returns the correct value when called with some other number arguments
    

    【讨论】:

      猜你喜欢
      • 2021-09-28
      • 2012-02-29
      • 2021-11-24
      • 2021-08-09
      • 2016-11-22
      • 2016-03-17
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多