gpt4 book ai didi

actionscript-3 - Array.filter 动态测试值

转载 作者:行者123 更新时间:2023-11-28 19:52:29 26 4
gpt4 key购买 nike

this is from Adobe docs :

package {
import flash.display.Sprite;
public class Array_filter extends Sprite {
public function Array_filter() {
var employees:Array = new Array();
employees.push({name:"Employee 1", manager:false});
employees.push({name:"Employee 2", manager:true});
employees.push({name:"Employee 3", manager:false});
trace("Employees:");
employees.forEach(traceEmployee);

var managers:Array = employees.filter(isManager);
trace("Managers:");
managers.forEach(traceEmployee);
}
private function isManager(element:*, index:int, arr:Array):Boolean {
return (element.manager == true);
}
private function traceEmployee(element:*, index:int, arr:Array):void {
trace("\t" + element.name + ((element.manager) ? " (manager)" : ""));
}
}
}

问题出在 Array 类的过滤方法上。它是这样工作的:你传递一个函数作为过滤器的参数,然后根据你传递的函数返回一个数组。问题是您似乎无法添加任何其他参数。因此,如果您必须从同一个数组创建(例如在 for 循环内)4 个数组并且您想要使用相同的函数,则只能针对您必须事先设置为要测试的值的类的属性进行测试.

还有其他方法可以添加该参数吗?

最佳答案

当按数组中的变量对象属性进行过滤时,我将过滤包装到另一个函数中:

protected function FilterByProperty(input_array:Array, extra_testing:Object):Array
{
function FilterFunction(element:Object, index:int, array:Array):Boolean
{
return element.property == extra_testing; // Arbitrary test
}

return input_array.filter(FilterFunction);
}

var filtered_array:Array = FilterByProperty(unfiltered_array, test_property);

关于actionscript-3 - Array.filter 动态测试值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1409218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com