在单词数组中查找反向单词

时间:2018-12-04 13:22:31

标签: javascript arrays reverse indexof

我需要编写一个函数,该函数接受特定单词的array,并找到相反版本的索引。

例如我需要返回“ peehs”的索引

var example = ['sheep', 'sheep', 'sheep', 'peehs', 'sheep'];
var result = 3

只需澄清一下,该函数已经接收到一个Array,并且不特定于上述示例。所以我可以收到一个数组,例如;

var example = ['horse', 'esroh', 'horse', 'horse']
var result = 1

而且,正如一些评论者所建议的那样,我不知道给定的数组。因此,我需要查找出现多次的单词,然后找到仅出现一次的单词的索引。

我本来以为我可以将数组的第一个索引与其余索引进行比较,但是第一个索引可以是反向版本,因此不起作用。

4 个答案:

答案 0 :(得分:2)

这是一个示例实现:

var strings = ['sheep', 'sheep', 'sheep', 'peehs', 'sheep'];
var searchString = 'sheep';

function reverseString(str) {
  return str.split('').reverse().join('');
}

function indexOfReverseString(str, arr) {
  return arr.indexOf(reverseString(str));
}

console.log(indexOfReverseString(searchString, strings));

说明

  • 使用split('')reverse()join('')转换为字符数组,然后将其反转并转换回字符串。
  • 使用indexOf查找数组中反向字符串的索引(如果没有匹配项,则使用-1)。

答案 1 :(得分:0)

请按照以下步骤操作:

  1. 从控制台或任何来源获取输入
    输入<-String

  2. 修剪[]的字符串

  3. 如果,拆分,则会得到一个数组

  4. 现在,您必须准确了解字符串的位置,即位置

  5. 反转字符串
    reversedstring <-String.reverse()

  6. foreach(array):
    比较反向字符串与数组的每个元素。

  7. 宾果!返回索引

inputsting = 'sheep';
reversestring = inputsting.split("").reverse().join("");
string s = "['sheep', 'sheep', 'sheep', 'peehs', 'sheep']";
s = s.ltrim('[').rtrim(']');
string [] ss = s.split(',');
int i=0;
for(string s1 : ss)
{
    if (s1==reversestring)
        return i;
    else i++;
}

答案 2 :(得分:0)

您可以按照以下方式检查。

我希望下面的代码能解决这个问题。

const isReverseString = (str,orgStr) =>
Array.from(str).reverse().join("") === orgStr ? true : false


let arrOfString =  ['sheep', 'sheep', 'sheep', 'peehs', 'sheep'] ;
const orgStr = "sheep";

const findIndexOfArrofString = (arr) => {
  arr.forEach((item,index) => isReverseString(item, orgStr) ? console.log("index is:",index) : null)
}


console.log(findIndexOfArrofString(arrOfString))

答案 3 :(得分:0)

为此您是否必须使用.split,.join和.reverse?根据您的解释,我不确定使用它们是否有意义。

这是我的解决方案,基于以下假设:反转的单词仅出现一次,正常的单词出现多次,这些是数组中唯一的字符串,并且您不知道该单词是什么:

let wordArr = ['sheep', 'sheep', 'sheep', 'peehs', 'sheep'];
let tempArr = wordArr.slice().sort();
if(tempArr [0] !== tempArr [1]) {
    console.log(wordArr.indexOf(tempArr[0]));
} else {
    console.log(wordArr.indexOf(tempArr[tempArr.length -1]));
}

大概您不能像一位评论员所建议的那样仅仅执行.indexOf('peehs')。该解决方案必须动态地找到数组中使用的单词是什么,并找到倒数第二个单词。