Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 编写一个名为“locate”的函数,该函数获取数组和值,如果多维数组中存在指定的值,则返回true_Javascript_Arrays - Fatal编程技术网

Javascript 编写一个名为“locate”的函数,该函数获取数组和值,如果多维数组中存在指定的值,则返回true

Javascript 编写一个名为“locate”的函数,该函数获取数组和值,如果多维数组中存在指定的值,则返回true,javascript,arrays,Javascript,Arrays,例如: locate(['a','b',['c','d',['e']]],'e'); // should return true locate(['a','b',['c','d',['e']]],'a'); // should return true locate(['a','b',['c','d',['e']]],'f'); // should return false 我的解决方案: var locate = function(arr,value){ arr=arr.join('').

例如:

locate(['a','b',['c','d',['e']]],'e'); // should return true
locate(['a','b',['c','d',['e']]],'a'); // should return true
locate(['a','b',['c','d',['e']]],'f'); // should return false
我的解决方案:

var locate = function(arr,value){
  arr=arr.join('').split(',').join('').split('');

  return arr.indexOf(value)!==-1;
}
它失败了:不应该找到“三”

还有更多:

var locate = function(arr,value){
  arr=arr.join('').split(',').join('');

  return arr.indexOf(value)!==-1;
}

这是一个不同的结果。

你对自己的输入做出了巨大的假设。仅仅因为示例数据使用单个字符,并不意味着实际测试数据将是单个字符

您的解决方案只是将所有内容分解为一个没有分隔符的字符串,然后将其分解回一个单个字符数组。对于像locate['te','st'],'blah'这样的输入,这将严重失败,您的解决方案将破坏输入数组,产生像['t','e','s','t']这样的内容进行搜索


您需要递归地在数组中搜索完全匹配的单个元素。你试图对你的拆分/加入/拆分/加入的东西太聪明了。

这个问题需要修改才能对其他人有用;你有什么问题?这个问题应该是你的题目。另外,为什么失败应该改为你期望看到的和你实际看到的。错误引用欧比万,卢克,使用。。。循环递归解释失败的原因,仅仅因为您通过了他们给您的示例,并不意味着它实际上是好的或正确的代码。它只是意味着它返回示例的预期答案。毫无疑问,他们有隐藏的测试用例,旨在捕捉那些走捷径、不通用的代码,例如,只是对给定输入的输出进行硬编码。我在第二个示例中尝试了它。出现了一个错误:不应该找到“三”不确定我会使用“聪明”这个词。他们还假设了嵌套的最大深度,这也是clever@MattBurland深度不是问题。在任意深度的数组上调用join将递归地调用每个嵌套数组上的toString。[1,[2,[3,[4,[5,…]].join将生成字符串12,3,4,5。产生一致结果的更直接的方法是在顶级数组[1,2,3,4,5,6,7,8]]上调用toString/=>1,2,3,4,5,6,7,8@meagar:老实说,我不知道toString会对嵌套数组执行此操作。很高兴知道。