【发布时间】:2019-09-19 23:28:23
【问题描述】:
我正在尝试从我的对象返回前五个检查点值。我首先,获取包含检查点的所有键,针对正则表达式进行测试。我得到了错误的值,我知道它是因为正则表达式,但不知道如何修复它。似乎是到达 checkpoint5 然后跳到 checkpoint10
var data = {
practicals: '0',
checkpoint1: '1',
checkpoint2: '1',
checkpoint3: '1',
checkpoint4: '0',
checkpoint5: '0',
checkpoint6: '0',
checkpoint7: '0',
checkpoint8: '0',
checkpoint9: '0',
checkpoint10: '1',
checkpoint11: '0',
checkpoint12: '0',
total: '2'
}
var res = Object.keys(data)
.filter(value => /^checkpoint([1-5])\d*/i.test(value))
.map(e => data[e])
console.log(res)
// Current output: ["1", "1", "1", "0", "0", "1", "0", "0"]
// Expected output: ["1", "1", "1", "0", "0"]
【问题讨论】:
-
属性名称不一定有顺序,您的正则表达式也匹配
checkpoint10和checkpoint11和checkpoint12。看看Object.keys(data)就知道了。 -
当检查点 1 到 5 分别为
["1", "0", "0", "0", "0"]时,为什么您的预期输出为["1", "1", "1", "0", "0"]? -
@Nikhil 抱歉,我刚刚编辑了它
-
@jfriend00 对不起,我不明白你的意思
-
你需要
/^checkpoint[1-5]$/i
标签: javascript arrays node.js regex