比较不同类型的JavaScript值(不是字符串)?

如何通过匹配属性和处理大小写不敏感来查找数组中的所有项目?如果值是字符串? 我无法知道对象上的属性是什么数据类型。 目标值和属性都可以是日期,字符串,数字等。

我基本上试图保护下一个开发者不让自己在脚下开枪:

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并且值最终成为日期或数字...或不匹配,会发生什么情况?


请参阅行内评论。

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;
}
链接地址: http://www.djcxy.com/p/94997.html

上一篇: Compare JavaScript values of different type (not strings)?

下一篇: array + charAt issue