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

时间:2015-09-24 20:42:38

标签: javascript arrays json object traversal

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

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

我正在寻找一种方法find(返回项目)和map(修改项目)typepants的项目和前一节点type等于jacket。所以它应该只返回(或修改)这个数组中的最后一项。

有没有办法在javascript中执行此操作?他们的任何库是否允许此功能?

2 个答案:

答案 0 :(得分:1)

一个简单的可以做到:



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

答案 1 :(得分:1)

这是使用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'))