重复失败的测试:给定对象和键,返回包含数组中元素的数组,位于给定键处,满足条件

Posted

技术标签:

【中文标题】重复失败的测试:给定对象和键,返回包含数组中元素的数组,位于给定键处,满足条件【英文标题】:Repeated failed tests for: Given object and key, return array containing elements within the array, located at the given key, that meet condition 【发布时间】:2017-06-29 13:54:29 【问题描述】:

The Link (you'll have to sign up)

虽然我的代码返回了预期的输出,但我不断收到针对闲置问题的失败测试。是测试有问题还是我的代码有问题?

问题...

给定一个对象和一个键,编写一个函数,该函数返回一个数组,该数组包含位于给定键处的数组中满足条件的元素。

如果数组为空,则返回一个空数组。 如果数组不满足条件,则返回一个空数组。 如果给定键的属性不是数组,则返回一个空数组。 如果键处没有属性,则返回一个空数组。

条件:元素少于100个。

代码

// expected output -> [20, 50, 0, 16] 

var obj = 
  key: [150, 20, 50, 100, 0, 16]
;



function getElementsLessThan100AtProperty(obj, key) 
  var arr = [];

  for (var i in obj.key)
    if(obj.key[i] < 100)
      arr.push(obj.key[i]);
    
  
  return arr;


getElementsLessThan100AtProperty(obj, 'key')// [20, 50, 0, 16] 

测试失败消息

should return an array containing all the elements less than 100 in the array located at key

Expected to equal 20,50,0,16.

什么给了?是我遗漏了什么还是测试有误?

【问题讨论】:

看来测试是我的错。您应该仔细检查预期的输出是否是一个数组。 显示你的测试代码和远程key参数没有使用。 这也是我对“key”参数的看法,没有必要。无法访问测试输出的代码。测试确实需要一个数组。如果我将函数的返回与预期输出硬编码为数组,则该部分测试通过,但空数组测试显然失败。当我使用 if 语句并返回硬编码数组或空数组时,它会失败。很奇怪?? 【参考方案1】:

如果你有一个返回数组的函数,你需要将该数组保存到某个东西。

所以在你的情况下,你的最后一行应该是这样的:

var arr = getElementsLessThan100AtProperty(obj, 'key');

arr 现在保存过滤后的数组(或可能为空数组,如果条件不满足)。

【讨论】:

以上是关于重复失败的测试:给定对象和键,返回包含数组中元素的数组,位于给定键处,满足条件的主要内容,如果未能解决你的问题,请参考以下文章

数组对象去重

最小唯一数组总和

列表和键

给定这个数组数组,我如何计算其中包含重复元素的数组的数量?

按 id 规范化对象数组和键

三数之和,去除重复。