为什么下面的if语句排除了一个'It’s和其他的一样
Why is the following if statement excluding an array that's identical to the rest?
我有以下数组:
[ 'markdown',
[ 'para', '"one"' ],
[ 'hr' ],
[ 'para', '"two"' ],
[ 'para', '"three"' ] ]
我做了一个循环,只匹配那些带有双引号的数组:
for (i = 1; i < jsonml.length; i++) {
if (typeof jsonml[i][1] === "string" && jsonml[i][1].match(/"/g)) {
var p = jsonml[i]
console.log(p)
}
// more code
if (jsonml[i][0] === 'hr') {
var hr = jsonml[i]
var p = jsonml[i + 1]
hr.splice(0, 1, 'para', '* * *')
p.splice(1, 0, {'class': 'noind'})
}
由于某些原因,console.log(p)
仅输出:
[ 'para', '"one"' ]
[ 'para', '"three"' ]
[ 'hr' ]
是否以某种方式使[ 'para', '"two"' ]
与if语句不匹配?如果是,如何修复它,使[ 'para', '"two"' ]
也匹配?
if (jsonml[i][0] === 'hr') {
var hr = jsonml[i]
var p = jsonml[i + 1]
hr.splice(0, 1, 'para', '* * *')
p.splice(1, 0, {'class': 'noind'})
}
编辑:
我认为问题出在下面的if语句上,因为console.log(jsonml[i][1])
输出:
"one"
undefined
{ class: 'noind' }
"three"
我以为if语句会按顺序执行?
问题似乎是因为您在修改数组的同时仍在对其进行迭代。这意味着当您找到[ 'para', '"two"' ]
项时,该项已不存在。
通常,在循环遍历集合时,应始终避免修改集合。如果需要进行更改,请在之前或之后进行更改(如果需要,也可以使用单独的循环)
相关文章:
- 使用向下箭头键(与tab键一样)聚焦下一个输入
- Lodash懒惰链不'It’我不管用
- 在SVG地图上添加水的渐变,就像在谷歌地图(PHP/JS)中一样
- React Native-What'It’在任何地方都要留下逗号
- 如何像模糊图像一样模糊iframe
- FullCalendar:事件发生时阻止重叠.标题是一样的
- 如何检测滚动事件是否像在触摸设备上一样只触发一次
- reducers在redux中得到Function not Object,what'it’他错了
- asp.net MVC,重定向到视图,视图打开新窗口到外部url,它'It’’’’我们被当成一种风景
- DIV怎么能像Javascript中的另一个元素一样工作呢
- 我正在创建一个聊天,但每次我发送消息时,它都不会让我再发送另一条消息,就像表格一样;不起作用
- 如何限制一个字段只接受4个数字字符作为输入,并获得'It’这是潜水警报
- 有没有8个谜题和15个谜题一样无法解决
- jQuery从输入中获取值并检查它是否'It’是的.如果是这样,它应该公布有多少是正确的
- 如何缩放像图像一样的元素
- 我需要iframe的内容像动画一样展开,填满整个屏幕并缩小到原来的大小
- 是否可以像字符串一样/操作/函数
- 为什么下面的if语句排除了一个'It’s和其他的一样
- 如何为谷歌柱状图上色'it’每个酒吧都不一样,保持原样
- 表单像ajax一样提交'It’不起作用