Rea*_*eic 1 javascript parameters
早上好
我想在 java 脚本中传递一个字符串作为函数参数,但该字符串将表示我希望该函数对其进行操作的属性的名称。我以前看过这个,但不太理解。
下面的函数显示了我所指的“字段”参数。它以字符串形式传递一个值,但对名称与字符串值匹配的属性进行操作。
我想要做的是循环遍历对象数组并仅返回名称与传递的字符串匹配的属性中存储的值。这个想法是有一个函数可以处理具有已添加到数组中的属性的任何对象并返回任何属性,而无需为每个属性编写循环函数。
下面是这种魔法的一个例子:
listName.sort(sort_by('stringPropertyName', false, function(a){return a.toUpperCase()}));
var sort_by = function(field, reverse, primer){ //http://stackoverflow.com/questions/979256/how-to-sort-an-array-of-javascript-objects
var key = function(x){return primer ? primer(x[field]) : x[field]};
return function (a,b){
var A = key(a), B = key(b);
return ((A < B) ? -1 :(A > B) ? +1 : 0) * [-1,1][+!!reverse];
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想“循环遍历对象数组并仅返回名称与传递的字符串匹配的属性中存储的值”,您可以这样做:
function getValues(array, propname) {
var values = [];
for (var i=0; i<array.length; i++) {
if (typeof array[i][propname] !== 'undefined') {
values.push(array[i][propname])
}
}
return values;
}
Run Code Online (Sandbox Code Playgroud)
“技巧”是使用包含属性名称的变量obj[propname]而不是obj.propnamewhen来访问propname属性。
例如window.location可以访问为window["location"]