0

我想在 JS 中打印最小变量“名称”。目前它打印最小值。我更想要变量名。例如:-在当前代码中,它给了我4,但我想要c。我怎样才能做到这一点?

<script>
function myFunction()
{
var a = 5;
var b =10;
var c = 4;
document.getElementById("demo").innerHTML=Math.min(a,b,c);
}
</script>
4

5 回答 5

1

工作演示

这应该可以解决问题:

//Push values to object
var age = {};
age.a = 5;
age.b = 10;
age.c = 4;

var min = Infinity, name;

// Loop through object to get min value and then find relevant name
for(var x in age) {
    if( age[x] < min) {
        min = age[x];
        name = x;
    } 
}

console.log ( 'property name is ' + name + ' and value is ' + min );
于 2013-10-21T09:03:13.163 回答
0

将值存储在对象数组中。每个对象都将包含一个nameandvalue属性。然后只需遍历这些值并存储最低值。

var values = [
    {
       "name": "a",
       "value": 5
},
    {"name":"b",
      "value":10
    },
    {
        "name":"c",
        "value":4
    }
];

function min(arr){
    var minValue = {};
    for(var x = 0; x < arr.length; x++){
        if(arr[x].value < minValue.value || !minValue.value){
            minValue = arr[x];
        }
    }
    return minValue.name;
};
document.getElementById("demo").innerHTML = min(values);

JS 小提琴:http: //jsfiddle.net/AgMbW/

于 2013-10-21T08:59:20.013 回答
0

你可以把你的值放在一个数组中,比如

var values = [
    { name: 'a', value: 5 },
    { name: 'b', value: 10 },
    { name: 'c', value: 4 }
 ];

然后使用带有Ahmad 评论filter提示的方法:

var min_value = Math.min.apply(null, values.map(function(item) {
    return item.value;
}));

var min_name = values.filter(function (item) {
    return item.value == min_value;
})[0].name;

请参阅此小提琴以获取工作示例。

于 2013-10-21T09:04:33.340 回答
0

你可以这样做:

var obj = {"names":["a","b","c"], "values":[5,10,4]}

var min = Math.min.apply( Math, obj["values"] );
var result = obj["names"][obj["values"].indexOf(min)];
document.getElementById("demo").innerHTML=result;

这里的小提琴:http: //jsfiddle.net/eUcug/

于 2013-10-21T09:07:41.413 回答
0

方式1:

var x = 5;var getName = function(value){if(value === 5) return 'x'; else return null}

方式2: NameValue.getName = function(value){for(i = 1;i<=2;i++){if(this["val" + i].value === value) {return this["val" + i].name;break;}console.log(this["val" + i]);}return null;}NameValue.val2 = {name : 'y',value : 1};NameValue.prototype.add({name : 'x',value : 10})

NameValue.getName(10);  //return "x"

我希望你能理解如何找到变量名。

于 2013-10-21T10:16:28.377 回答