Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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 在数组中找到不同的元素并返回其位置_Javascript_Arrays_Loops - Fatal编程技术网

Javascript 在数组中找到不同的元素并返回其位置

Javascript 在数组中找到不同的元素并返回其位置,javascript,arrays,loops,Javascript,Arrays,Loops,试图解决这个问题: 此数组采用以下格式的动物数组: ['sheep', 'sheep', 'sheep', 'sheep', 'peehs', 'sheep'] 除了1只动物外,所有动物都是“正确的方向” 您的函数应该返回其索引位置。 这些动物并不总是绵羊,但它们永远是同类动物的领地 我尝试过不同的方法,比如array.sort(),但这样做会返回错误的索引 这是我目前的代码: function findWrongWayAnimal (field) { for(let i =0; i&l

试图解决这个问题:

此数组采用以下格式的动物数组:

 ['sheep', 'sheep', 'sheep', 'sheep', 'peehs', 'sheep']
除了1只动物外,所有动物都是“正确的方向”
您的函数应该返回其索引位置。
这些动物并不总是绵羊,但它们永远是同类动物的领地

我尝试过不同的方法,比如array.sort(),但这样做会返回错误的索引

这是我目前的代码:

function findWrongWayAnimal (field) {
  for(let i =0; i<field.length; i++){
    if(field[i] !== field[i+1] || field[i] !== field[i-1]){
      return field.indexOf(field[i]);
    }
  }
}
函数findWrongWayAnimal(字段){

对于(设i=0;i你的方法中的问题是循环的第一步是i=0,
所以字段[i-1]就像说字段[-1],返回未定义的。所以你的函数总是返回0,因为字段[0]!==未定义这里是一个混合的reduce和find包

var arr=['sheep','sheep','sheep','sheep','sheep','peehs','sheep']
var发生率=arr.REDUCT((对象,项目)=>{
obj[项目]=(obj[项目]| | 0)+1;
返回obj;
},{});//计数出现次数
console.log(
//显示出现次数为1的项的索引
arr.indexOf(Object.keys(引用).find(key=>引用[key]==1))

)
您需要
&&
而不是
|
,因为您需要检查它是否与至少2个其他元素不同。此外,您还需要对数组的句柄第一个和最后一个元素进行不同的检查,因为它们分别没有
i-1
i+1

var animals1=['peehs','sheep','sheep','sheep','sheep','sheep','sheep'];
var animals2=[“羊”、“羊”、“羊”、“羊”、“皮”、“羊”]
var animals3=[“羊”、“羊”、“羊”、“羊”、“羊”、“皮”]
功能findWrongWayAnimal(现场){
对于(设i=0;i
var temp=['sheep','sheep','sheep','sheep','sheep','peehs','sheep'];
功能findWrongWayAnimal(现场){

对于(让i=0;iSeems作业,至少重新表述您的函数应该返回其索引位置。您想要的预期结果是什么?这不是作业,我现在正在自学。我需要返回错误方式的索引。但即使我不添加字段[i-1],仍然返回0。对于(让i=0;看,还有第二个流。这是field.indexOf(field[i]);事实上,如果你发现了这个字段[i]!==field[i+1],你想返回i(或i+1)索引将给你匹配的第一个元素,这是0。所以,改变你的返回语句来返回I+1;将做这项工作。只考虑考虑,如果错误的值是数组中的第一个值,那么会发生什么。然后,你应该返回0;但是,我不确定你是如何定义什么是“错误的”。