私はオブジェクトの配列を持っています。実際にオブジェクトはGeoJSON仕様に準拠しているので、そのことを念頭に置いてください。 「特性」オブジェクト内には、「名前」の特徴が存在する。この名前は、A、B、C ... blah ... Z、AA、ABなどとなります。 (私は、このような形状とするものではないとして、この質問には重要ではなかったいくつかの他のものを、取り除くでした...)JSONの例を参照してください:Javascript - オブジェクトの配列から次の文字を取り出します
{
"features" : [{
"properties" : {
"name" : "A",
"description" : null,
},
"type" : "Feature"
}, {
"properties" : {
"name" : "B",
"description" : null,
},
"type" : "Feature"
}, {
"properties" : {
"name" : "C",
"description" : null,
},
"type" : "Feature"
}
],
"type" : "FeatureCollection"
}
私が何をしたいのですがどうしてMAXを見つけることです系列の中の次のものを返すために、この配列の配列内の文字。この例では、 'C'はMAXとみなされるため、 'D'の値を返す必要があります。もし私がAAを持っていたら、それはMAXとみなされ、 'AB'を返します。最大値が 'Z'だった場合は、 'AA'の値を返したいと思います。
小文字の使用を無視して、大文字の英字26文字のみを使用できます。他の文字はありません。
私はjavascript CharCodeAt(インデックス)のいくつかの使用法とMath.maxを適用し、+ 1を追加してから、それをASCII文字のrepresenationに変換することでこれを解決できると信じています...しかし、これを一緒にして、このすべてのものをループする働きをします。
ご了承ください。
更新: 次のコードを部分的に使用しています。しかし、それがZからAAにラップすると、それを動作させる方法をあまり理解していません。または、MAXがAFであると分かった場合は、AGを返します。 AZはBAを返さなければならないだろう。
String.fromCharCode(Math.max.apply(Math,someObject.features.map(function(o){return o.properties.name.charCodeAt(0);})) + 1)
他の既知のルール:
- 上限はZZすることができます - 私は最大の文字は常に配列の最後ではありませんバックAAA
- にラップする必要があるだろう非常に低いので、 は単に配列の最後の機能を取得できません。
var maxName = null, obj = null, name = null; for(var idx = 0; idx < features.length; ++idx){ obj = features[idx]; name = obj.properties.name; if(maxName == null || name.length > maxName.length || (name.length == maxName.length && name > maxName) ){ maxName = name; } }
私はまだかかわらず、次の名前を得ることに取り組んでいる:
は、MAXは常にちょうどあなたの機能の配列の最後の対象になりますか? – Ju66ernaut
必ずしもそうではありませんので、配列の最後の要素を悩ますことはできませんでした。 – dvsoukup
*はMAXとみなされます* - MAXはランダム入力パラメータですか? – RomanPerekhrest