Jqueryの公式リファレンスでは、grepは元々の配列には影響しないと書かれているのですが、
以下のように記述すると、元々の連想配列の値まで変わってしまいます。
これはどのようなことが起こっているのでしょうか?
Javascript
1var goods = [ 2{ name: 'トマト', kind: '野菜', price: 100 }, 3{ name: 'みかん', kind: '果物', price: 200 }, 4{ name: 'きゅうり', kind: '野菜', price: 300 }, 5{ name: 'もも', kind: '果物', price: 400 }, 6{ name: 'ピーマン', kind: '野菜', price: 500 }, 7{ name: 'ぶどう', kind: '果物', price: 600 }, 8]; 9 10var vegetable = $.grep(goods, 11function (elem, idx) { 12return (elem.kind == '野菜'); 13} 14); 15vegetable[0]["price"] = 0 //配列goodsの値まで変わってしまう 16
ちなみに以下のように、連想配列でない配列をgrepすると元々の配列に影響しないのですが、これは連想配列をgrepした場合とどのような違いがあるのでしょうか?
Javascript
1var arr = ['January', 'February', 'March', 'April', 'May', ' 2June', 'July', 'August', 'September', 'October', 'November', 'December']; 3 4var eInMonth = $.grep(arr, function (value, index) { 5return value.indexOf('e') >= 0; 6}); 7 8eInMonth[0] = "2月"; //配列arrの値は変わらない
回答2件
あなたの回答
tips
プレビュー