在筛选器上获取所需的堆栈对象

Get the required stack object on filter

本文关键字:堆栈 对象 获取 筛选      更新时间:2023-09-26

假设我的堆栈有这样的对象。。[obj1 ,obj2 , obj3 , obj1]

我有两个类似的obj1

现在打开obj1的筛选器。。。。我希望最右边的obj1先被选中。。。但它总是最左边的obj1可能是因为它是第一个添加的。。。FIFO

请告诉我如何过滤后进先出

这是我的代码

var obj = stack.filter(function ( obj ) {
    return obj.id === 'somevalue';
    })[0];

以上代码返回obj1(最左边)

它总是根据FIFO过滤并给出对象。。。。我想要后进先出法。。意味着最右边的CCD_ 6首先返回。

您可以创建列表的副本,并在筛选之前使用.reverse()首先反转列表。

var obj = [].slice.call(stack).reverse().filter(function ( obj ) {
  return obj.id === 'somevalue';
})[0];

如果您有一个大列表,我会使用从数组末尾开始的for循环,并在找到匹配项时返回。这将避免贯穿整个列表。

var obj = (function() {
  for(var i = stack.length - 1; i >= 0; i--) {
    if(stack[i].id === 'somevalue') {
      return stack[i];
    }
  }
})();

获取堆栈中的最后一项,

var obj = stack.filter(function ( obj ) {
    return obj.id === 'somevalue';
})[stack.length -1];