数组中对象的最后一个索引

时间:2017-04-07 15:34:04

标签: javascript arrays

下面的代码将返回对象的第一个索引,其id =" 1"如何找到id =" 1"的对象的最后一个索引。这是2?当然我可以使用循环但不使用循环是可能的吗?

var array = [{id: "1"}, {id: "2"}, {id: "1"}];

    var index = array.findIndex(function(oItem) {
        return oItem.id === "1";
    });

4 个答案:

答案 0 :(得分:3)

您可以map()将数组排列为ID数组,然后使用lastIndexOf

var array = [{id: "1"}, {id: "2"}, {id: "1"}];

var lastIndex = array.map(e => e.id).lastIndexOf('1')
console.log(lastIndex)

由于目前没有findLastIndex方法,并且您不想使用循环,您可以使用递归创建自己的函数,您可以将匿名函数作为参数传递给搜索。

var array = [{id: "1"}, {id: "2"}, {id: "1"}];

function findLastIndex(data, func) {
  var start = data.length - 1;
  var result = null;

  function search(data, i, func) {
    if (i < 0) return;
    var check = func(data[i]);

    if (check == true) {
      result = i;
      return;
    }
    search(data, i -= 1, func)
  }

  search(data, start, func)
  return result;
}

var lastIndex = findLastIndex(array, function(e) {
  return e.id == 1;
})

console.log(lastIndex)

答案 1 :(得分:1)

您可以使用Array#map并声明新的index变量,该变量将被覆盖,直到它到达给定id的最后一个元素。

var array = [{id: "1"}, {id: "2"}, {id: "1"}],
    index;
    arr = array.map((v,i) => v.id == 1 ? index = i : null);
    
    console.log(index);

答案 2 :(得分:0)

使用Array map()方法

尝试此操作

var myarray = [{id: "1"}, {id: "2"}, {id: "1"}];

var res = myarray.map(function(item) {
  return item.id;
});

console.log(res.lastIndexOf("1"));

答案 3 :(得分:-1)

如果你不介意使用lodash,它有findLastIndex

如果有的话,您可以查看the source of it的想法。