我不确定标题是否适合我想要实现的目标
我正在将 JSON 结果映射到数组。因为我需要一遍又一遍地执行此操作,所以我想将代码放入一个函数中。
在下面的例子中我会重复自己的话。我有名为 item.data1、item.data2 的属性,在第二个示例中为 item.something1、item.something2 ...如何将这些属性作为“常规”参数传递给新创建的函数,以便在那里使用它们而不是重复一遍要归还那些 map 吗?新函数应该可用于下面的两个示例以及属性可能具有不同名称的其他情况。
service.getData(function(data) {
var map = {};
map = $.map(data, function(item, i) {
var entry = {};
entry.key = item.data1;
entry.value = item.data2;
return entry;
});
});
service.getSomething(function(data) {
var map = {};
map = $.map(data, function(item, i) {
var entry = {};
entry.key = item.something1;
entry.value = item.something2;
return entry;
});
});
最佳答案
使用 []
和字符串来动态地从对象中提取属性。
var a = { foo: 123 };
a.foo // 123
a['foo'] // 123
var str = 'foo';
a[str] // 123
这意味着我们可以像这样重构您的方法,只需将您想要读取的属性名称作为字符串传递即可。
var getKeyValueMap = function(data, keyPropName, valuePropName) {
return $.map(data, function(item, i) {
return {
key: item[keyPropName],
value: item[valuePropName]
}
});
};
service.getData(function(data) {
return getKeyValueMap(data, 'data1', 'data2');
});
service.getSomething(function(data) {
return getKeyValueMap(data, 'something1', 'something2');
});
关于javascript - 如何将对象属性作为参数传递? (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13760186/