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

Write a function named "locate" that gets an array and value and returns true if specified value exist in a multidimentional array

本文关键字:数组 函数 如果 返回 true 存在 一个 locate 获取      更新时间:2023-09-26

示例:

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;
}

它失败了:Should not find 'three'

以及更多:

var locate = function(arr,value){
  arr=arr.join('').split(',').join('');
  return arr.indexOf(value)!==-1;
}

这是一个不同的结果。

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

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

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