根据兄弟姐妹之前或之后查找项目
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'))
假设我有一组这样的数据:
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'))