プロが教えるわが家の防犯対策術!

var a = 100;
var b = 50;
var c = 60;
var d = 70;
//変化する数値です。eやfも追加されるかもしれません。ひとまず、


maxAray=[a,b,c,d];
var myData;
myData=maxAray.sort(koujyun);
function koujyun(a,b){
return b-a;
}

結果をdocument.write〜で表示します
A「100,70,60,50数字として降順」

と出ましたが この配列の中の0番目に入ってる変数名を知りたいのですが、方法はありますか?

質問者からの補足コメント

  • 同時の数値の場合は?ということでしょうか?同時の数値な場合はソートで100100となるので、そこは先にきた数値で諦めます。無理でしょうか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/07/17 18:30
  • maxAray=[a,b,c,d];
    document.write(Math.max.apply(null,maxAray)+"です<br>");
    名前はつけれないのなら無理でしょうか?

      補足日時:2015/07/17 21:29
  • もしくは、そのまま配列の中身の数lengthで、何通りか計算することはできないでしょうか

      補足日時:2015/07/17 21:41
  • 比べたa.b.c.d...をもう一度、配列の0番目にソートした数値と等しいが比較する方法をおしえて下さい。

      補足日時:2015/07/17 21:54
  • もう一回もとの配列のバックアップをとってソート後の配列[0]と等しいか確認後、バックアップ配列の何番目のものか確認する…では無理でしょうか?

      補足日時:2015/07/18 02:30

A 回答 (3件)

無理やりやりたいならwindowの要素を総当たりすればいけます



<script>
var a = 100;
var b = 50;
var c = 60;
var d = 70;
maxAray=[a,b,c,d];
var myData;

myData=maxAray.sort(koujyun);
for(prop in window){
if(window[prop]==maxAray[0]){
document.write("降順:"+prop+"<br>");
break;
}
}

myData=maxAray.sort(shoujyun);
for(prop in window){
if(window[prop]==maxAray[0]){
document.write("昇順:"+prop+"<br>");
break;
}
}

function koujyun(a,b){
return b-a;
}
function shoujyun(a,b){
return a-b;
}

</script>

ただし、既存のプロパティにヒットするリスクはあります。
どうしてもということであれば変数名を制限するなどしてリスクヘッジして下さい
    • good
    • 1
この回答へのお礼

ありがとうございます。ひとまず、それでやってみます。

お礼日時:2015/07/18 02:31

そのままでは無理なので、maxAray に名前まで埋め込みましょう。



var maxAray = {a:a, b:b, c:c, d:d};
var buff = [];
for (var i in maxAray) buff.push( { name:i, val:maxAray[i] } );
var myData = buff.sort(function(a,b){return b.val - a.val});
document.write( myData[0].name );
    • good
    • 2

>0番目に入ってる変数名を知りたい



変数aが100ですが、100がaだけだとは限りません。
たとえばa,b,c,dという選択肢のウチのどれか?ということであれば
aだと確定できますけど・・・
この回答への補足あり
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!