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

Finding item based on sibling before or after

本文关键字:兄弟姐妹 查找 项目 或之后      更新时间:2023-09-26

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

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

我正在寻找find(返回项目)和map(修改项目)的方法,其中typepants,前面的节点有type等于jacket。因此,它应该只返回(或修改)数组中的最后一项。

有什么方法在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'))