嵌套属性作为函数参数
Nested properties as function argument
我正在尝试做一个简洁的小函数来过滤对象数组,以便仅返回具有某个属性唯一值的对象。当prop
只是一个普通属性(如 "email"
)时,此函数工作正常。但是当将嵌套属性作为参数时,该函数不起作用,例如"customer.email"
var unique = function (arr, prop) {
var found = [];
return arr.filter(function (obj) {
if (found.indexOf(obj[prop]) < 0) return found.push(obj[prop]);
});
};
reminders = unique(reminders, 'customer.email');
是否有一种优雅的方法可以将嵌套属性作为参数,还是应该避免这种情况?
我将传入一个属性函数,而不是传递属性名称:
var unique = function (arr, prop) {
var found = [];
return arr.filter(function (obj) {
var value = prop(obj);
var result = found.indexOf(value) < 0;
if (result) found.push(value);
return result;
});
};
var reminders = unique(reminders, function (obj) {
return obj.customer.email;
});
希望有帮助。
其他版本
var unique = function (arr, prop) {
var found = [];
return arr.filter(function (obj) {
var i=0, currentProp;
while (obj && (currentProp=(prop.split("."))[i++]) ) {
obj=obj[currentProp];
}
if (found.indexOf(obj) < 0) return found.push(obj);
});
};
var reminders=[{customer : {email:'test'}},{customer : {email:'vlad'}},{customer : {email:'vlad'}}];
reminders= unique(reminders, 'customer.email');
console.log(reminders);
var reminders=[ {email:'test'}, {email:'vlad'}, {email:'vlad'}];
reminders= unique(reminders, 'email');
console.log(reminders);
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- AngularJS:我可以跳过函数参数回调吗
- 为什么不'我们在javascript中使用函数参数的数据类型
- 使用闭包共享构造函数参数
- 函数参数的值错误
- 当一个重要的构造函数参数丢失时应该发生什么
- 阻止ReSharper将JavaScript函数参数放到新行中
- 根据函数参数将CSS值存储在var中,然后对其进行操作
- 使构造函数参数具有ES6类方法的特权
- 当客户端将两个按钮的javascript函数参数修改为相同时,SQL/PHP会更新多行
- Windows.Networking.EndpointPair构造函数参数
- 是否可以使用Sinon.JS检查函数参数绑定是否正确
- 大括号中的Javascript函数参数
- jQuery 无法使用 AJAX 调用访问函数内部的函数参数
- 将JSON字符串转换为函数参数
- eval()读取函数参数有多糟糕
- Javascript不能在一个命令中使用函数参数
- 函数参数在内部不可见,返回新的Promise(函数(resolve,reject).传递给被promise化的函数的
- ES6类构造函数参数
- 是否可以在javascript函数参数列表中调用多个函数