簡體   English   中英

JavaScript-將屬性添加到數組對象

[英]javascript - adding properties to array objects

我試圖遍歷傳遞給函數的管道分隔列表,將其作為分隔符基於管道拆分成一個數組,然后將每個項目分解成其組成部分,其格式如下:

“76:1167 | 76:1168”

因此數組將為:surveyQuestions [0] = 76:1167。 然后將其分為:surveyQuestions [0] .question = 76和surveyQuestions [0] .answer = 1167。

這是我正在使用的代碼,但是當我嘗試將屬性添加到每個數組項時,這些值未定義回來。

function answerSurvey(survey){

var surveyResults = survey.split("|");

for (var i=0;i<surveyResults.length;i++){

    var surveyResult = surveyResults[i].split(":");
    var surveyQ = surveyResult[0];
    var surveyA = surveyResult[1];
    surveyResults[i].surveyQ = surveyQ;
    surveyResults[i].surveyA = surveyA;
    console.log(surveyResults[i].surveyQ + "|" + surveyResults[i].surveyA)
}

}

answerSurvey("76:1167|76:1168");

您試圖將屬性添加到字符串中,但是您不能這樣做。 如果希望Array包含對象列表,請使用Array.map()將字符串轉換為對象:

var surveyResults = survey.split("|").map(function (result) {
    var parts = result.split(":");
    return {
        question: parts[0],
        answer: parts[1]
    };
});

它包含在大多數瀏覽器中,但是對於某些瀏覽器的舊版本,您需要手動添加.map()

編輯: jQuery確實添加了地圖功能(如注釋中所述)。 調整代碼略高於以包括陣列作為第一個參數,以$.map()和替代參數名this (或移位result參數一個向右,下列index ):

var surveyResults = $.map(survey.split("|"), function (i, result) {
    var parts = result.split(":");  // or this.split(":")
    return {
        question: parts[0],
        answer: parts[1]
    };
});

嘗試這個:

function answerSurvey(survey){

var surveyResults = survey.split("|");

for (var i=0;i<surveyResults.length;i++){

    var surveyResult = surveyResults[i].split(":");
    var surveyQ = surveyResult[0];
    var surveyA = surveyResult[1];
    surveyResults[i] = {};
    surveyResults[i].surveyQ = surveyQ;
    surveyResults[i].surveyA = surveyA;
    console.log(surveyResults[i].surveyQ + "|" + surveyResults[i].surveyA)
}

}

answerSurvey('76:1167|76:1168');

surveyResults[i]是一個“字符串”,不是對象,因此無法向其添加屬性。

嘗試這個:

var surveyQ = surveyResult[0];
var surveyA = surveyResult[1];
surveyResults[i] = {};
surveyResults[i].surveyQ = surveyQ;
surveyResults[i].surveyA = surveyA;

示例: http//jsfiddle.net/Paulpro/WeJxe/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM