我创建了以下代码:
topicService.topics.forEach(function (row: ITopicRow) {
if (row.topicId == $stateParams.topicId) {
row.current = true;
topicService.topic = angular.copy(row);
topicService.topicBase = angular.copy(row);
} else {
row.current = false;
}
})
当调用函数代码并将 $stateParams.topicId 设置为一个数字时,它会搜索行并将该特定行上的 current 设置为 true。
但是我有一个问题,如果只有一个主题,它就不起作用。在这种情况下,forEach 甚至不会运行。下面是显示长度 1 的行。当我将鼠标悬停在主题上时,我还可以看到它是一个数组 []。
var x = topicService.topics.length; x = 1 <<<<<<
请注意,当我将其放在 forEach 之前以及当我将调试点放在 forEach 的第一行时,它不会到达那里。
是否有某种方法可以使用 forEach 解决此问题,或者我是否需要仅针对只有一个主题的情况编写代码?
最佳答案
如果存在多个项目,某些 API 函数通常会返回数组;如果仅存在一项,则返回一个项目而不是“包含一项的数组”
。因此,topicService.topics
甚至可能不包含数组。
这很可能是 forEach
在您的情况下失败的原因。所以添加一个检查:
if( topicService.topics.constructor === Array) {
// do foreach
}
关于javascript - 如果数组中只有一个元素,forEach 不会运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32311868/