次の多次元配列をjQueryで最小ループの単次元連想配列に変換するにはどうすればよいですか?
array(array('a'=>3),array('b'=>2),array('c'=>4),array('d'=>3))
期待される結果:
array('a'=>3,'b'=>2,'c'=>4,'d'=>3);
次の多次元配列をjQueryで最小ループの単次元連想配列に変換するにはどうすればよいですか?
array(array('a'=>3),array('b'=>2),array('c'=>4),array('d'=>3))
期待される結果:
array('a'=>3,'b'=>2,'c'=>4,'d'=>3);
{'a':3, 'b':2, 'c':4, 'd':3}
...結果で探しているJS構文です。JS には、たとえば PHP にあるような連想配列はありません。JS には、(ほぼ) 同じ仕事をするオブジェクトがあります。
表示するコードが他の言語 (PHP?) で有効な場合は、JSON 文字列に変換できます。JSON が JS によって解析されると、次のようなオブジェクトの JS 配列になります。
[ {'a':3}, {'b':2}, {'c':4}, {'d':3} ]
それをオブジェクトの配列ではなく JS オブジェクトに変換するには、おそらく次を使用するのが最も簡単な方法ですjQuery.extend()
。
// assume some JSON.parse() or other process has created
myArr = [ {'a':3}, {'b':2}, {'c':4}, {'d':3} ]
// then
var tmpArr = myArr.slice(0); // make shallow copy of myArr
tmpArr.unshift({}); // insert an empty object
var newObj = jQuery.extend.apply(this, tmpArr);
デモ: http://jsfiddle.net/SqcEw/
元の配列内の複数の要素が同じプロパティ名を持っている場合、最終的なオブジェクトで一方が他方を上書きすることに注意してください。
参考文献:
$.extend()