次のような文字列の配列があるとします。
var fruit = ["apple","peach","pear","plum"];
オブジェクトで満たされる空の配列。それぞれのオブジェクトには、果物配列の特定のインデックスにバインドされたテキスト プロパティがあります。
var objlist = [];
for (var i=0;i<fruit.length;i++) {
objlist.push({text: fruit[i]});
}
//objlist[0].text = "apple", objlist[1].text = "peach", etc.
次のステートメントのように、最初の配列の要素を「バインド」する方法はありますか。
fruit.shift()
objlist 内のオブジェクトのテキスト プロパティが、fruit 配列内の対応するインデックスに更新されますか?
//objlist[0].text = "peach", objlist[1].text = "pear", etc.
.text はおそらく関数 .text() でなければならないという事実に同意しましたが、それは私の目的には問題ありません。
以下は明らかな理由で機能しません。
for (var i=0;i<fruit.length;i++) {
objlist.push({text: function() { return fruit[i]; }}); //i is not bound
}
ただし、これは完全に機能します。
[0,1,2,3].forEach(function(i) {
objlist.push({text: function() { return fruit[i]; }}); //i is bound
});
2 番目の方法を使用すると、fruit[] を変更でき、それに応じて objlist が更新されますが、エレガントではありません。
私の質問:これを行うためのより良い方法はありますか? ポインタの使用に似たものでしょうか?