数値の配列があり、特定の x より小さい最初の数値を取得し、次に同じ x より大きい最初の数値を取得したいと考えています。
var str = 'some random string that is kind of long',
items = [],
position = 10, //varies
itemsBefore,
itemsAfter,
firstItemBeforePosition,
firstItemAfterPosition; //varies
for(var i = 0, length= str.length; i < length; i++){
if(str[i] === ' '){
items.push(i);
}
}
itemsBefore = items.filter(function(item){
return item < position;
});
itemsAfter = items.filter(function(item){
return item > position;
});
firstItemBeforePosition = itemsBefore.length > 0 ? itemsBefore[itemsBefore.length - 1] : 0;
firstItemAfterPosition = itemsAfter.length > 0 ? itemsAfter[0] : str.length;
私が提供した JavaScript コードに基づいて、items 配列は[4, 11, 18, 23, 26, 31, 34]
、firstItemBeforePosition
4、およびfirstItemAfterPosition
11 になります。
これを行うより良い方法はありますか?
ありがとうございました。