我有五个变量 - organism.one,organism.two等等,最多五个。 它们都等于随机数。
我试图找到最小的,我可以使用Math.min()。
但是,Math.min返回最小数字,而不是保存该最小值的变量名称。
请帮忙,我是JavaScript的新手。到目前为止,这是我的代码:
runt = Math.min(organism.one, organism.two, organism.three, organism.four, organism.five);
console.log("The runt is " + runt);
答案 0 :(得分:1)
由于您的对象包含包含数字的键,因此您可以使用 for ... in 来迭代它们以找到最小的键:
var organism = {
one: 50,
two: 100,
three: 25,
four: 15,
five: 999
},
min = Infinity,
key;
for(var i in organism) {
if(organism[i] < min) {
min = organism[i];
key = i;
}
}
console.log(key); //four
答案 1 :(得分:1)
我的建议是使用[] .reduce
var objects = [{
name: 'one',
val: 13
},
{
name: 'two',
val: 12
},
{
name: 'three',
val: 11
}];
var minimum = objects.reduce(function(obj1, obj2){
return (obj1.val < obj2.val) ? obj1: obj2;
});
console.log(minimum.val)
答案 2 :(得分:0)
这应该这样做:
var lowestValsKey;
for(var key in organism){
if(!lowestValsKey){
lowestValsKey = key;
}
if(organism[key] < organism[lowestValsKey]){
lowestValsKey = key;
}
}
console.log(lowestValsKey);
答案 3 :(得分:0)
如果我理解你正在尝试做什么,也许你可以使用面向对象的方法。
var organism = { "one" : someValue, "two" : someValue, "three" : someValue, "four": someValue, "five": someValue };
var min = null;
var minKey = null;
for( var key in organism ){
if( null === min ){
// we're at the beginning of the object, so assign min to that value.
min = organism[key];
minKey = key;
}
else if(( null !== min ) && ( organism[key] < min )){
min = organism[key];
minKey = key;
}
}
console.log( "The key with the min value is: " + key + " and the value is: " + organism[key] );
答案 4 :(得分:0)
不需要所有这些不同的功能,你非常接近,你只需要一个循环来完成它:
获得分数后,循环遍历对象以找到匹配项:
var organism = {
two: 2,
three: 3,
four: 4,
one: 1,
five: 5
};
var runt = Math.min(organism.one, organism.two, organism.three, organism.four, organism.five);
var lowest;
for (var org in organism) {
if (organism[org] === runt) {
lowest = org;
}
}
答案 5 :(得分:0)
正如您所注意到的,Math.min
只接受参数,只返回一个数字。没有办法让它按照你的要求去做。
但是,如果我正确地阅读你的问题,你真正要问的是:
我可以将对象传递给函数并获取最低值的键名吗?
如果是这样,有办法做到这一点。
var organism = {
one: 12,
two: 19,
three: -1,
four: 99,
five: 6
};
function findSmallestKey(obj) {
var smallestKey;
var smallestValue = Number.MAX_VALUE;
Object.keys(obj).forEach((key) => {
var val = obj[key];
if (val < smallestValue) {
smallestValue = val;
smallestKey = key;
}
});
return smallestKey;
}
var k = findSmallestKey(organism);
console.log('Smallest key is ', k);
答案 6 :(得分:0)
你可能不会找到你想要的答案,因为这是不可能的。但是,您可以创建自己的功能来完成它。
function main(){
function getRandom(min,max){
return Math.floor(Math.random()*(max-min))+min;
}
var organism = {
one: getRandom(1,10),
two: getRandom(1,10),
three: getRandom(1,10),
four: getRandom(1,10),
five: getRandom(1,10),
};
function findMin(obj){
var keys = Object.keys(obj);
var min = {
name:keys[0],
val:obj[keys[0]]
};
keys.forEach((key)=>{
if (obj[key] < min.val)
min={name:key,val:obj[key]};
});
return min;
}
var min = findMin(organism);
document.getElementById('organisms').innerHTML = JSON.stringify(organism);
document.getElementById('min').innerHTML = ([min.name,min.val].join(': '));
}
<button onclick="main();">Run</button>
<pre id="organisms"></pre>
<div id="min"></div>