获取json数组中元素的最后一个索引

时间:2019-06-08 20:23:14

标签: javascript arrays object

我有一个数组

var arr = [{name:"Steve",toppedIn:"Biology"},
           {name:"Carol",toppedIn:"Maths"},
           {name:"Steve",toppedIn:"Chemistry"}];

我想获取arr.name中名称的最后一个索引。findIndex()将给出第一个,在这种情况下我该如何使用lastIndex?

4 个答案:

答案 0 :(得分:1)

首先反转数组,然后检查是否找到该值,然后从数组的最后一个索引中减去反转的索引,以获得正确的答案。

var arr = [{name:"Steve",toppedIn:"Biology"},{name:"Carol",toppedIn:"Maths"},{name:"Steve",toppedIn:"Chemistry"}];

const lastIndexOfName = name => {
  let index = [...arr].reverse().findIndex(person => person.name == name);
  console.log(index);
  console.log(arr.length);
  return index >= 0 ? arr.length - 1 - index : index;
}

console.log(lastIndexOfName("Steve"));

答案 1 :(得分:0)

在JS中,您必须使用

array [array.length-1]

访问最后一个元素

答案 2 :(得分:0)

lastIndex = (arr.length-1) - arr.reverse().findIndex(x=>x.name==="Steve");
arr.reverse();

这也可以,但是我不知道哪一个表现更好。

答案 3 :(得分:0)

我为这个问题做了一个简化的包装:

var arr = [ {name:"Steve",toppedIn:"Biology"  }   // 0    Steve
          , {name:"Carol",toppedIn:"Maths"    }   // 1
          , {name:"Carol",toppedIn:"Maths"    }   // 2
          , {name:"Steve",toppedIn:"Chemistry"}   // 3    Steve
          , {name:"Carol",toppedIn:"Maths"    }   // 4
          , {name:"Carol",toppedIn:"Maths"    }   // 5
          , {name:"Steve",toppedIn:"Chemistry"}   // 6  <-- last Steve
          , {name:"Carol",toppedIn:"Maths"    }   // 7
          , {name:"Carol",toppedIn:"Maths"    }   // 8
          ];



Array.prototype.FindLastIndex = function( CallFunction ) {
  var r = -1, t = Object(this);
  for (let i=t.length;i-->0;) {
    if (CallFunction(t[i])) {
      r=i;
      break
    }
  }
  return r
};


console.log ('last Steve is: index= ',  arr.FindLastIndex(a=>a.name=='Steve')  )  // 6