Underscore.js の map() 関数を使用して元のキーを削除しながら、大きな配列のキーを別のキーにマップしたい。
large_array = _.map(data, function(element) {
element.b = element.a;
delete element.a;
return element;
});
console.log(large_array) // Returns an array with length == 0
large_array の長さがゼロになるのはなぜですか?
delete ステートメントを間違って使用しているように感じますが、よくわかりません。
編集:
単純な実行は問題なく機能しているように見えるため、このコードを抽象化しすぎている可能性があります。
元のデータ配列は、FB.api('/me/friends', function(response) {...}
具体的には、{id: "12345", name: "Bubba Watson"} などのオブジェクトの配列です。
これは Facebook からの応答であるため、各オブジェクトには 'id' 属性があることが保証されています。
実際のコードは、「id」プロパティを「facebook_id」プロパティに変更しています。
FB.api('/me/friends', function(response) {
console.log(response.data); // Returns 600+ Array of Bubba Watson like objects, each with an id.
large_array = _.map(response.data, function(element) {
element.facebook_id = element.id;
delete element.id;
return element;
});
console.log(large_array); // Mysteriously Returns: {length: 0, __proto__: Array[0]}
}