У меня есть строка, например «я не могу спать, что мне делать», а также фраза, которая содержится в строке «не могу спать». То, что я пытаюсь сделать sh, это получить окно n размера вокруг фразы, даже если с обеих сторон нет n слов. Так что в этом случае, если бы у меня был размер окна 2 (2 слова на любой размер фразы), я бы хотел «я не могу спать, что должен».
Это мое текущее решение, пытающееся найти размер окна из 2, однако происходит сбой, когда количество слов слева или справа от фразы меньше 2, я также хотел бы иметь возможность использовать окна разных размеров.
const get_window = (phase, word, size) => {
let splited = phase.split(/\W/)
let idx = splited.indexOf(word)
let a = parseInt(size / 2)
let init = -a
let final = size % 2 == 0 ? a : a + 1
let n = []
for (let i = init; i < final; i++) {
if (splited[idx + i] != undefined) n.push(splited[idx + i])
else n.push("<PAD>")
}
return n
}
console.log(get_window("hi, i'm a boy", "hi", 2))