Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于一个对象和另一个字符串数组填充数组_Javascript_Arrays_Object - Fatal编程技术网

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},…最大长度应该在相等的最高值之间!不是所有句子的最大长度