如果值是字符串,我如何通过匹配属性和处理不区分大小写来查找数组中的所有项?我无法知道对象上的属性将是什么数据类型。目标值和属性都可以是日期,字符串,数字等。
我基本上试图保护下一位开发者不要在脚下射击自己:
function getItemsByKey(key, value, isCaseSensitive) {
var result = [];
(getAll() || []).forEach(function(item){
if (!(!!isCaseSensitive)) {
if (item[key] && item[key].toString().toLowerCase() == value.toString().toLowerCase()) { result.push(item); }
} else {
if (item[key] == value) { result.push(item); }
}
});
return result;
}
如果他们传入isCaseSensitive = true
并且值最终为日期或数字......或不匹配会怎样?
答案 0 :(得分:2)
参见内联评论。
function getItemsByKey(key, value, isCaseSensitive) {
var result = [];
(getAll() || []).forEach(function(item){
// Either the values are equal OR (not case sensitive AND item[key] and value are strings AND non-case sensitive match)
if (item[key] == value || (
!isCaseSensitive &&
typeof item[key] == 'string' &&
typeof value == 'string' &&
item[key].toLowerCase() == value.toLowerCase())
) {
result.push(item);
}
});
return result;
}