JSON実装がスパース配列を満足のいくように処理できるかどうかを知る必要があります。私は質問を見ました:JSONでスパース配列を表現する方法は?しかし、配列ではなくオブジェクトを使用することは私にとってオプションではありません。配列が必要です。
私の最小要件は、実装が「未定義」でギャップを埋めることです。それ以外の場合は、JSONエンコードの前に、自分でギャップを埋める防御コードを作成しています。
JSON実装がスパース配列を満足のいくように処理できるかどうかを知る必要があります。私は質問を見ました:JSONでスパース配列を表現する方法は?しかし、配列ではなくオブジェクトを使用することは私にとってオプションではありません。配列が必要です。
私の最小要件は、実装が「未定義」でギャップを埋めることです。それ以外の場合は、JSONエンコードの前に、自分でギャップを埋める防御コードを作成しています。
ありえない。実装を忘れてください、それは仕様で許可されていないのは明白です。
配列は値のみで定義されます。オブジェクトは、インデックス/キーに意味がある場合に使用します。
プロパティ名がインデックスで、プロパティ値が値であるオブジェクトを使用し、それを中間関数で実行してスパース配列を作成できますか?
function getSparseArray(obj) {
var ary = [];
for (prop in obj) {
var i = parseInt(prop,10);
if (!isNaN(i)) {
ary[i] = obj[prop];
}
}
return ary;
}
あなたはそれを次のように送るでしょう
{ "5":"Five", "11":"Eleven", "99":"Ninety-Nine"}
そして、3つの値だけが入力された配列を取得します。
ary[5] = "Five"
ary[11] = "Eleven"
ary[99] = "Ninety-Nine"
ary[0] = 'undefined'
ary[98] = 'undefined'
etc.
ary
ここでの長さは100になりますが、あなたの意味では「スパース」配列になります。