gpt4 book ai didi

javascript - 根据一个对象和另一个字符串数组填充一个数组

转载 作者:行者123 更新时间:2023-11-30 08:18:05 25 4
gpt4 key购买 nike

我有一个句子数组和一个对象,它的属性指向每个句子索引和表示句子分数的值,如下所示:

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]

我已经尝试了很多,但无论我尝试多少,最后,我只会变得更加困惑......:(

最佳答案

您也可以使用sort 方法,然后丢弃排序在高端的项目:

var sentences = ['I am', 'I am a good doctor', 'I am a doctor', 'I am a'];
var object = { 0: 10, 1: 100, 2: 80, 3: 90};

var result = Object.keys(object).map(Number)
.sort((i, j) => object[i] - object[j] ||
sentences[i].length - sentences[j].length);
result.pop(); // discard last
console.log(result);

关于javascript - 根据一个对象和另一个字符串数组填充一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58570005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com