有没有一种方法可以为数组中的对象文字指定通用元素?
例如:
var array = [ {key: "hi", label: "Hi", formatter:deleteCheckboxFormatter},
{key: "hello", label: "Hello", formatter:deleteCheckboxFormatter},
{key: "wut", label: "What?", formatter:deleteCheckboxFormatter}];
所有三个记录使用相同的格式化程序.您将如何重构呢?
解决方法:
我想到了两种选择:
一个具有默认值的“ helper”功能,它的“ common”字段为:
function make(key, label) {
return {'key': key, 'label': label, formatter:deleteCheckboxFormatter};
}
var array = [ make("hi", "Hi"),
make("hello", "Hello"),
make("wut", "What?")];
或更通用的函数接受formatter属性的参数:
function make (formatter) {
return function (key, label) {
return {'key': key, 'label': label, 'formatter':formatter};
}
}
// a function to build objects that will have a 'fooFormatter'
var foo = make('fooFormatter');
var array = [ foo ("hi", "Hi"),
foo ("hello", "Hello"),
foo ("wut", "What?")];
我想到的最后一件事就是简单地遍历分配公共字段的数组:
var array = [ {key: "hi", label: "Hi"},
{key: "hello", label: "Hello"},
{key: "wut", label: "What?"}];
var i = array.length;
while (i--) {
array[i].formatter = 'deleteCheckboxFormatter';
}
我在这里使用了相反的while循环,因为迭代的顺序并不重要,而这种类型的循环为performs better.