У меня есть массив предложений и объект, на которые его свойства указывают каждый индекс предложения, и значения, представляющие оценку предложения следующим образом:
var sentences = ['I am', 'I am a good doctor', 'I am a doctor', 'I am a']; // sentence with index 0 score 10 and sentence with index 3 score 90 .
var object = { 0: 10, 1: 100, 2: 80, 3: 90}; // index of sentences with their scores
, если я хочу создать массив с именемresult
для сохранения индекса предложений с более низкими баллами и игнорирования индекса предложений с наивысшим баллом, тогда я могу сделать что-то вроде этого:
var object = {0: 10, 1: 100, 2: 80, 3: 90},
max = Math.max(...Object.values(object)),
result = Object
.keys(object)
.filter(k => object[k] !== max)
.map(Number);
console.log(result);
Приведенный выше код работает нормально, пока у нас не будет более одного максимального значения, такого как (равное и самое высокое):
var object = {0: 10, 1: 100, 2: 100, 3: 100};
На этот раз result
массив возвращает только [0]
, и мы теряем все равные и самые высокие из них.
Я хочу изменить код так, чтобы, если мы столкнулись с такой ситуацией, то было удалено только предложение с большей длиной .
Таким образом, в нашем примере sentences[1] = 'I am a good doctor'
является самым длинным из индексов 1, 2 и 3, тогда мы просто удаляем его, и конечный результат будет:
result = [0, 2, 3]
Я попробовалмного, но как бы я ни старался, в конце концов, я просто запутался ... :(