2

我正在循环一个对象,并且有条件地我正在安慰结果。但我得到了所有 3 个结果,而不是只得到 2 个。我的代码有什么问题?

请问有什么建议吗?

我的代码:

 var processModules = function (mData) {
    var lcalmData = obj = {'content':'new content','navigation':'newNavigation','form':'newform'}; var title;
    $('body').append(
        $.each(lcalmData, function (i,val) {
            title = (i === 'content' || i === 'navigation')  ? $('<div />') : i === 'form' ? $('<form />') : null;
            return title;
        } )  
    )
}

jsfiddle

4

3 回答 3

3

这条线是有问题的:

val === 'content' || 'navigation'

我想你的意思是检查是否val等于这些值之一?) 但它不是这样工作的:由于===操作员优先级高于||一,它本质上与...相同

(val === 'content') || 'navigation'

...换句话说,总是一个真实的价值。

您的意图可能会被重写,就像...

... (i === 'content' || i === 'navigation')

...因为它是应该检查的索引(键),而不是值。

于 2012-08-15T10:03:47.410 回答
1

http://jsfiddle.net/WsQ6K/2/

您使用的是 val 而不是 i 即属性名称而不是值

于 2012-08-15T10:22:23.393 回答
0

你需要这样做:

var title = ( val === 'content' || val === 'navigation' ) ? val.type  : null;

括号 () 可能不是必需的。您现在正在测试 val === 'content' 或 'navigation' 是否为 'true'。事实上,后者总是正确的。

于 2012-08-15T10:04:46.583 回答