javascript - 向数组对象添加属性

标签 javascript jquery arrays properties

我试图循环传递给函数的管道分隔列表,将其拆分为基于管道作为分隔符的数组,然后将每个项目分解为其组成部分,其中格式如下:

“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.map() 来将字符串转换为对象:

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

它包含在大多数浏览器中,但对于某些浏览器的旧版本,您需要 add .map() manually .

编辑: jQuery 确实添加了 map 功能(如评论中所述)。稍微调整上面的代码,将数组作为 $.map() 的第一个参数包含进来,并将参数名称替换为 this (或移动 结果 code> 参数 1 位于右侧,位于 index 之后):

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

关于javascript - 向数组对象添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7289621/

相关文章:

arrays - Swift,如何使用带索引的数组重新排序另一个数组

arrays - 在 VBA 中将数组与标量相乘并相加

javascript - 来自不会 javascript 的人的 jQuery 问题

asp.net-mvc - Web Api 调用返回 404 错误,GUID 作为参数传递

jQuery:快速滚动 - 可能吗?

javascript - 如何为 src 的最后三个字符是 certian 文件类型的图像设置 css?

c++ - 二维数组和文件处理 [C++]

javascript - 更改 jQuery 滑动切换上的按钮样式

javascript - HTML Table,从行中检索数据并将其显示在其他地方

javascript - 如何得到N个和等于M的随机整数