javascript - 字符串比较 Javascript
问题描述
我刚开始使用 javascript,但在 React 中成功比较两个字符串时遇到了困难(或者在这种情况下只是 Javascript)。假设我有以下功能:
function compare(a, b) {
var n = -1, m = 0;
console.log(a, b, b === "important"); // prints here
if (a === "important") {n = 2;}
else if (a === "normal") {n = 1;}
else {n = 0;}
if (b === "important") {m = 2;}
else if (b === "normal") {m = 1;}
else {m = 0;}
return n - m;
}
但代码的输出(两次单独执行后)是
["normal"]
["important"] // this case? b is "important"
false
["unimportant"]
["normal"]
false
我不明白为什么上面的代码不起作用。谁能解释一下?提前致谢。
编辑
调用的函数
sorter: (a, b) => compare(a.levels, b.levels),
a和b在哪里
{
key: "1",
title: "Eat",
date: "2020-07-20 07:57",
levels: ["important"]
},
{
key: "2",
title: "Sleep",
date: "2020-07-20 07:57",
levels: ["normal"]
},
请注意,该函数是在 React 中调用的。CodeSandbox 演示
解决方案
显然,因为 a 和 b 是数组而不是字符串文字。您应该在方法中比较 a[0] 或在 compare 方法中传入 a.levels[0] 。
推荐阅读
- .htaccess - 在 URL 中显示特定案例
- amazon-web-services - 由于 CPU 信用低导致 AWS 运行实例节流
- hive - 失败:ParseException 行 4:0 无法识别列规范中 ')' 'COMMENT' ''V1.0'' 附近的输入
- node.js - React Passport Auth with Express Localhost 问题与 cors() 未启用
- android - Firebase 平台实时数据库的命名约定
- ionic3 - ngIf 异步管道 Ionic 3
- java - spring flatfile:块读取 null 最后一行
- redis - 将 Celery 任务直接插入 Redis
- hibernate - 建造
使用 Hibernate 映射 - ibm-cloud-private - 如何将证书应用到现有的 IBM Cloud Private 2.1.0.2 安装?