首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery将值字符串转换为数组

jQuery将值字符串转换为数组
EN

Stack Overflow用户
提问于 2018-09-25 11:07:25
回答 3查看 820关注 0票数 0

请考虑这条绳子:

代码语言:javascript
复制
['2012-2','2012-3','2012-4','2013-1','2013-2','2013-3','2013-4','2014-1']

我从一个web方法中返回这个字符串,我想循环这个值,并编写如下:

代码语言:javascript
复制
var tr = '<tr><td>Title</td>';
$.each(arrPeriods, function (index, value) {
     tr += '<td>' + value + '</td>';
});
tr += '</tr>';

我得到了一个错误:

JavaScript运行时错误:“in”的操作数无效:预期的对象

我认为问题在于,我应该将字符串转换为数组,但我不知道如何做到这一点。请帮我解决我的问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-25 11:16:18

必须将所有"'"替换为"\"",然后可以使用JSON.parse()将字符串转换为数组。就像这样:

代码语言:javascript
复制
var answer = "['2012-2','2012-3','2012-4','2013-1','2013-2','2013-3','2013-4','2014-1']";
answer = answer.split("'").join("\"");

var arrPeriods = JSON.parse(answer);

var tr = $('<tr><td>Title</td></tr>');

$.each(arrPeriods, function(index, value) {
  tr.append('<td>' + value + '</td>');
});

$('table').append(tr);
票数 1
EN

Stack Overflow用户

发布于 2018-09-25 11:12:28

在将字符串转换为数组之后,必须使用jQuery方法.append()来添加td

注意:如果可能的话,我建议从后端返回一个数组,这样会更有效。此解决方案目前只是暂时修复

代码语言:javascript
复制
var arrPeriods = "['2012-2', '2012-3', '2012-4', '2013-1', '2013-2', '2013-3', '2013-4', '2014-1']";
var myArray = arrPeriods.replace(/\[|\]|'/g, '').split(',');

var tr = $('<tr><td>Title</td></tr>');

$.each(myArray, function(index, value) {
  tr.append('<td>' + value + '</td>');
});

$('table').append(tr);
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<table border=1></table>

票数 1
EN

Stack Overflow用户

发布于 2018-09-25 12:03:37

见评论。

代码语言:javascript
复制
var arrPeriods = "['2012-2', '2012-3', '2012-4', '2013-1', '2013-2', '2013-3', '2013-4', '2014-1']";
arrPeriods = arrPeriods.replace(/'/g, '"'); // Clean the string into an acceptable JSON string
arrPeriods = JSON.parse(arrPeriods); // Parse the JSON string

var $tr = $('<tr><td>Title</td></tr>'); // Create the row
var $table = $('<table></table>')
  .append($tr);

// No need to use jQuery's .each
arrPeriods.forEach(function (date) {
  $tr.append('<td>' + date + '</td>');
});

$('body').append($table);
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52496728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档