我无法使用Vector类使map()函数正常工作。
结果总是返回null - 它应该返回一个带有addFive函数返回值的新向量(这个例子显然不是我真正的用例)。
阵列版本按预期工作。
有没有人有幸得到map()与Vector合作?
public function test_vector_map():void {
var v1:Vector.<uint> = new <uint>[1,2,3];
trace(v1); // traces 1,2,3
var v2:Vector.<uint> = v1.map(addFive);
trace(v2); // traces null
}
protected function addFive(item:uint, index:int, vector:Vector.<uint>):uint
{
return item+5;
}
public function test_array_map():void {
var v1:Array = [1,2,3];
trace(v1); // traces 1,2,3
var v2:Array = v1.map(addSix);
trace(v2); // traces 7,8,9
}
protected function addSix(item:uint, index:int, array:Array):uint
{
return item+6;
}
答案 0 :(得分:8)
这是一个动作脚本/ flash播放器错误。似乎adobe已在内部修复它,但从Flash Player 10.1开始,该修复程序尚未发布。
请参阅: https://bugzilla.mozilla.org/show_bug.cgi?id=513095
这是我们在这里发现的bug的根本原因:
https://bugzilla.mozilla.org/show_bug.cgi?id=507501
你现在可以做的最好的事情就是在需要Map时坚持使用Arrays
答案 1 :(得分:3)
很奇怪......我看到了你的确认。你可以随时使用这个解决方案:
var v1:Vector.<uint> = new <uint>[1,2,3];
trace(v1); // traces 1,2,3
var v2:Vector.<uint> = v1.slice();
v2.forEach( addFive );
trace(v2); // traces 6,7,8