1

JavaScript オブジェクトに到達し、null 値を見つけて、それらを空の文字列 (または他のコンテンツ) に置き換える、より効率的な方法を見つける必要があります。これは私が持っているものであり、機能しますが、より効率的な方法論が必要であり、 $.each を使用する必要があることはわかっていますが、それを理解できないようです。

これが機能します...これらすべてのifステートメントをよりエレガントなものに置き換えたいですか?

        var oMilestone = {
            sTitle: $(this).attr("ows_Title"),
            sStatus: $(this).attr("ows_Status"),
            sOwner: $(this).attr("ows_Assigned_x0020_Owner"),
            sStart: SPConvertDate($(this).attr("ows_Start_x0020_Date")),
            sDue: SPConvertDate($(this).attr("ows_Due_x0020_Date")),
            sPercent: $(this).attr("ows_Percent_x0020_Complete"),
            sComments: $(this).attr("ows_Update_x0020_Comments")
        }
        if (oMilestone.sOwner == null) {
            oMilestone.sOwner = " "
        }
        if (oMilestone.sStart == null) {
            oMilestone.sStart = " "
        }
        if (oMilestone.sDue == null) {
            oMilestone.sDue = " "
        }
        if (oMilestone.sPercent == null) {
            oMilestone.sPercent = " "
        }
        if (oMilestone.sComments == null) {
            oMilestone.sComments = " "
        }

何か助けはありますか?

ケビン

4

2 に答える 2

0

for...inプロパティを反復処理するために使用します。下記参照、

for (i in oMilestone) {
   if (oMilestone.hasOwnProperty(i) && !oMilestone[i]) {
        oMilestone[i] = " "; //covers undefined, null and ""
   } 
}
于 2013-02-26T21:37:55.443 に答える
0

私の答えは$.each.

しかし、いつでも $(this) にアクセスできる小さなヘルパー関数をインラインで書くことができます。繰り返しを保存します。

function attrOrDefault(attribute) {
    return $(this).attr("ows_Title") || " ";
}

var oMilestone = {
    sTitle: attrOrDefault("ows_Title"),
    sStatus: attrOrDefault("ows_Status"),
    sOwner: attrOrDefault("ows_Assigned_x0020_Owner"),
    sStart: SPConvertDate($(this).attr("ows_Start_x0020_Date")),
    sDue: SPConvertDate($(this).attr("ows_Due_x0020_Date")),
    sPercent: attrOrDefault("ows_Percent_x0020_Complete"),
    sComments: attrOrDefault("ows_Update_x0020_Comments")
}

または、これを頻繁に使用すると思われる場合は、jQuery を拡張してこの機能を持たせることはできますか?

$.fn.attrOrDefault = function(attribute) {
    return this.attr("ows_Title") || " ";
}
于 2013-02-26T22:07:52.517 に答える