Javascript 基于一个对象和另一个字符串数组填充数组
我有一个句子数组和一个对象,它的属性指向每个句子索引和表示句子分数的值,如下所示:Javascript 基于一个对象和另一个字符串数组填充数组,javascript,arrays,object,Javascript,Arrays,Object,我有一个句子数组和一个对象,它的属性指向每个句子索引和表示句子分数的值,如下所示: 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 se
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 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
var对象={0:10,1:100,2:80,3:90},
max=Math.max…Object.valuesobject,
结果=对象
.KeyObject
.filterk=>对象[k]!==最大值
.地图编号;
console.logresult 如果必须保持数据不变,请尝试此方法。我在回答中使用了@Daniyal Lukmanov提出的建议
var sentences = ['I am', 'I am a good doctor', 'I am a doctor', 'I am a'];
var object = {0: 10, 1: 80, 2: 100, 3: 100};
maxScore = Math.max(...Object.values(object));
var maxScoreSentences = [];
for (var i=0; i <sentences.length; i++){
if(object[i] === maxScore) {
maxScoreSentences.push(sentences[i]);
}
}
lengthsMax = Math.max(...maxScoreSentences.map(s => s.length));
result = Object
.keys(object)
.filter(k => object[k] !== maxScore || sentences[k].length !== lengthsMax)
.map(Number);
console.log(result);
如果必须保持数据不变,请尝试此方法。我在回答中使用了@Daniyal Lukmanov提出的建议
var sentences = ['I am', 'I am a good doctor', 'I am a doctor', 'I am a'];
var object = {0: 10, 1: 80, 2: 100, 3: 100};
maxScore = Math.max(...Object.values(object));
var maxScoreSentences = [];
for (var i=0; i <sentences.length; i++){
if(object[i] === maxScore) {
maxScoreSentences.push(sentences[i]);
}
}
lengthsMax = Math.max(...maxScoreSentences.map(s => s.length));
result = Object
.keys(object)
.filter(k => object[k] !== maxScore || sentences[k].length !== lengthsMax)
.map(Number);
console.log(result);
只需添加最大检查长度:
var句子=[“我是”,“我是一名好医生”,“我是一名医生”,“我是一名医生];
var对象={0:10,1:100,2:100,3:100},
lengthsMax=Math.max…句子.map=>s.length,
max=Math.max…Object.valuesobject,
结果=对象
.KeyObject
.filterk=>对象[k]!==最大句子数[k]。长度!=长度最大值
.地图编号;
console.logresult 只需添加最大检查长度:
var句子=[“我是”,“我是一名好医生”,“我是一名医生”,“我是一名医生];
var对象={0:10,1:100,2:100,3:100},
lengthsMax=Math.max…句子.map=>s.length,
max=Math.max…Object.valuesobject,
结果=对象
.KeyObject
.filterk=>对象[k]!==最大句子数[k]。长度!=长度最大值
.地图编号;
console.logresult 您想要的结果是分数小于max的结果与分数等于max的结果的串联 const句子=[“我是”,“我是一名好医生”,“我是一名医生”,“我是一名医生]; const object={0:10,1:100,2:100,3:100}; const max=Math.max…Object.valuesobject; const objectKeys=Object.keysobject; 常量equalValues=objectKeys.mapk,i=>object[k]==max?句子[i]。长度:0; const lengthsMax=数学最大值…相等值; const resultEqualToMax=objectKeys .filterk,i=>对象[k]==最大值和句子[i]。长度!==长度最大值 .地图编号; const resultLessThenMax=objectKeys .filterk=>对象[k]!==最大值 .地图编号; const result=[…resultLessThenMax,…resultEqualToMax];
console.logresult 您想要的结果是分数小于max的结果与分数等于max的结果的串联 const句子=[“我是”,“我是一名好医生”,“我是一名医生”,“我是一名医生]; const object={0:10,1:100,2:100,3:100}; const max=Math.max…Object.valuesobject; const objectKeys=Object.keysobject; 常量equalValues=objectKeys.mapk,i=>object[k]==max?句子[i]。长度:0; const lengthsMax=数学最大值…相等值; const resultEqualToMax=objectKeys .filterk,i=>对象[k]==最大值和句子[i]。长度!==长度最大值 .地图编号; const resultLessThenMax=objectKeys .filterk=>对象[k]!==最大值 .地图编号; const result=[…resultLessThenMax,…resultEqualToMax]; console.logresult 您也可以使用排序方法,然后放弃在高端排序的项目: var句子=[“我是”,“我是一名好医生”,“我是一名医生”,“我是一名医生]; var对象={0:10,1:100,2:80,3:90}; var result=Object.keysobject.mapNumber .sorti,j=>object[i]-object[j]| 句子[i].长度-句子[j].长度; result.pop;//最后丢弃 console.logresult 您也可以使用排序方法,然后放弃在高端排序的项目: var句子=[“我是”,“我是一名好医生”,“我是一名医生”,“我是一名医生]; var对象={0:10,1:100,2:80,3:90}; var result=Object.keysobject.mapNumber .sorti,j=>object[i]-object[j]| 句子[i].长度-句子[j].长度; result.pop;//最后丢弃
console.logresult;如果有两个或更多相同长度的句子呢?没有。。。我保证:如果有两个或更多相同长度的句子呢?没有。。。我保证:谢谢你的答案加一,但我也想要结构:你在寻找得分最高的句子的最大长度,对吗?谢谢你的答案加一,但我也想要结构:你在寻找得分最高的句子的最大长度,对吗?谢谢你的答案加一,但试试这个:var object={0:10,1:80,2:100,3:100},…最大长度应该在相等的最高值之间!不是所有句子的最大长度谢谢答案加1,但是试试这个:var object={0:10,1:80,2:100,3:100},…最大长度应该在相等的最高值之间!不是所有句子的最大长度