我有对象的一个这样的数组:的JavaScript得到所有匹配的邻居
const arr = [{
label: [1,1]
},
{
label: [1,0.5]
},
{
label: [1,0.5]
}
,{
label: [1,0.5]
}
,{
label: [1,1]
}]
我然后我有一个指标值,假设值是2
。这将对应于:
{
label: [1,0.5]
}
现在,我想根据标签值查找所有的索引或对象。我正在做比较的方式是label.join(',') ===
,这很好。
在此示例数组中,在提供的索引2
之前和之后会有一个。
我可以遍历,但不知道如何去“之前或之后”,特别是因为之前或之后可能会有很多。
这结束了工作进行的顺利:从给定的索引开始,前进后退阵列中
const index = 3;
const first = _.first(arr, index).reverse()
const rest = _.rest(arr, index + 1)
let found = []
for (let i = 0; first.length; i++) {
if (first[i].label.join(',') == arr[index].label.join(',')) {
found.push(first[i])
} else {
break;
}
}
for (let i = 0; rest.length; i++) {
if (rest[i].label.join(',') == arr[index].label.join(',')) {
found.push(rest[i])
} else {
break;
}
}
它应该是邻居的consequtive链? – RomanPerekhrest
“旁边的”是什么意思? – Barmar
我不明白。如果idx == 2,那么你有'arr [idx-1]'和'arr [idx + 1]' – mplungjan