jquery 字符串变成数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery 字符串变成数组相关的知识,希望对你有一定的参考价值。

例如,var a = "123,234,345,456。567?"
如何转换成 var b = [123,234,345,456,567];
再放把li标签里面
<ul>
<li>123</li>
<li>234</li>
<li>345</li>
<li>456</li>
<li>567</li>
</ul>
比如:var a = "ss:123,aa:234,ee:345,ss:456。gg:567?中文:123?"
放到UL里面
<ul>
<li>ss:123</li>
<li>aa:234</li>
<li>ee:345</li>
<li>ss:456</li>
<li>gg:567</li>
<li>中文:123</li>
</ul>
这样的话,该怎么处理呢?

参考技术A 分割后组装成x:y可以使用下面的方法:

var strTem="x=y";strTem=""+strTem.split("=").join(":")+"";

split方法首先把字符串按照给定的标识字符分割为数组"x","y",数组的join函数按照给定的字符串把数组中的元素拼接为字符串。追问

单个是可以了,但是有很多类似这样的,我该如何做呢?
是不是用each方法来做呢?

本回答被提问者采纳
参考技术B <!DOCTYPE html>
<html>
  <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script class="jquery library" src="/js/sandbox/jquery/jquery-1.8.2.min.js" type="text/javascript"></script>
<title>RunJS 演示代码</title>
<script>
var a = "123,234,345,456。567?"
$(function()
var ul=$("<ul>");
$(a.replace(/^\\D+|\\D+$/g,"").split(/\\D+/)).each(function(i,d)
var li=$("<li>");
li.append(d);
ul.append(li);
);
$("body").append(ul);
);
</script>
  </head>
<body>
   
  </body>
</html>

追问

纯数字是可以了,要是前面带英文或者中文字符呢?

比如:var a = "ss:123,aa:234,ee:345,ss:456。gg:567?中文:123?"
放到UL里面

ss:123
aa:234
ee:345
ss:456
gg:567
中文:123

要是这样的话,该怎么处理呢?

jQuery 1.4.4+ AJAX 请求 - 发布空数组或对象变成字符串

【中文标题】jQuery 1.4.4+ AJAX 请求 - 发布空数组或对象变成字符串【英文标题】:jQuery 1.4.4+ AJAX request - post empty array or object becomes string 【发布时间】:2011-07-16 04:50:48 【问题描述】:

我在 Javascript 中有一个对象,我正在尝试将 AJAX POST 发送到 PHP 脚本。在 jQuery 1.4.1 中一切正常,但现在在 1.4.4 或更高版本中,所有空数组或空对象都作为不正确的 string(0) 到达。

JS:

$(document).ready(function() 
var obj = ;
obj.one = [];
obj.two = ;
obj.three = [];
obj.three.push('one');
obj.three.push('two');
obj.three.push('three');
obj.four = "onetwothree";

$.ajax(
    type: 'POST',
    url: 'ajax.php',
    data: obj,
    success: function(data) 
        alert(data);
    ,
);
);

PHP:

<?php
var_dump($_POST);
?>

回复:

array(4) 
  ["one"]=> string(0) ""
  ["two"]=> string(0) ""
  ["three"]=> array(3) 
    [0]=> string(3) "one"
    [1]=> string(3) "two"
    [2]=> string(5) "three"
  
  ["four"]=> string(11) "onetwothree"

在 1.4.1 版本中,它不会发送 ["one"] 或 ["two"],但现在在较新的版本中,它作为字符串到达​​的事实会影响整个应用程序。有什么办法可以让空数组 ([]) 作为空数组 ([]) 到达 PHP 并与 JavaScript 对象相同?

【问题讨论】:

嗨。你找到解决这个问题的方法了吗?我也对这个感兴趣。在我看到你的帖子之前,我已经发布了this。 【参考方案1】:

尝试将 JSON.stringify 应用于传递的参数

 data: JSON.stringify ( obj ),

请注意,您可能希望包含 contentType: "application/json" 选项以提示服务器端正确处理数据。

引用:Why jQuery ajax does not serialize my object?

traditional: true 是完全错误的,因为它永远无法处理对象层次结构。你得到的是:...&key=[object Object],这是 javascript 对所有对象的 toString() 默认结果。

【讨论】:

【参考方案2】:

尝试将traditional 选项设置为true

$.ajax(
    type: 'POST',
    traditional: true,
    url: 'ajax.php',
    data: obj,
    success: function(data) 
        alert(data);
    
);

查看newer API 的datatraditional 选项。

如果您希望在 IE7 中正常工作,请从 success 回调后删除多余的逗号。

【讨论】:

谢谢 Karim79,我尝试将传统转换为 true,但空数组和对象仍然作为字符串 (0) 出现,但现在我的嵌套数组变成了 [object Object]。

以上是关于jquery 字符串变成数组的主要内容,如果未能解决你的问题,请参考以下文章

Rails 无法正确解码来自 jQuery 的 JSON(数组变成带有整数键的散列)

jQuery

jQuery的加法运算,val()获取的结果相加变成了字符串连接。

将字符串变成数组split

java 如何将字符串变成数组?用.作为间隔

java怎么把一个字符串变成数组