根据兄弟姐妹之前或之后查找项目

Finding item based on sibling before or after

假设我有一组这样的数据:

var nodes = [
  {
    type: 'pants',
  },
  {
    type: 'glasses',
  },
  {
    type: 'jacket'
  },
  {
    type: 'pants'
  }
]

我正在寻找 find(return 项目)和 map(就地修改项目)type 为 [=14 的项目=] 并且前面的节点 type 等于 jacket。所以它应该只return(或修改)这个数组中的最后一项。

在 javascript 中有什么方法可以做到这一点吗?他们有任何库允许此功能吗?

一个简单的 for 就可以做到:

for (var i = 0; i < nodes.length - 1; i++) {
  if (nodes[i + 1].type == "pants" && nodes[i].type == "jacket") {
    // change or modify
  }
}

这是一个使用 reduce 方法的函数:

var nodes = [
  {
    type: 'pants',
  },
  {
    type: 'glasses',
  },
  {
    type: 'jacket'
  },
  {
    type: 'pants'
  }
]
function test(arr,el,bef){
  return arr.reduce(function(acc,a,i,arr){
        if(a.type==el && arr[i - 1] && arr[i-1].type==bef){
         acc.push(a); 
        }
        return acc ;
    },[])
}
console.log( test(nodes,'pants','jacket'))