jquery split string无法正常工作

时间:2016-01-06 21:32:47

标签: javascript jquery

我正在尝试从页面中的网址获取一些值。我没有得到一个数组,而是一个逗号分隔的字符串。它适用于控制台,但不适用于网站。

这是网址:

mysite.com/index.html?tags=tag2+tag1

这是我的html标题:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script type="text/javascript" src="http://www.parsecdn.com/js/parse-latest.js"></script>
    <script type="text/javascript" src="home_recipes_js.php"></script>

这是js代码:

checkDocumentReady();

function checkDocumentReady() {

    $(document).ready(function() {

        var tagsString = getUrlVars()["tags"];

        tagsParser(tagsString);
    });
}

function getUrlVars() {

    var vars = {};
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
        vars[key] = value;
    });
    return vars;
}

function tagsParser(tagsString) {

    var rawTags = tagsString.split('+');

    console.log('rawTags : ' + rawTags.length + ' ' + rawTags);
}

这是控制台输出:

tagsString: 2 tag2,tag1

我做错了什么?

1 个答案:

答案 0 :(得分:3)

试试这个

console.log(rawTags);

你会得到一个数组。

当JavaScript将数组连接到字符串时,实际上会调用数组上的.join(',') ,因此在您的代码中

console.log('rawTags : ' + rawTags.length + ' ' + rawTags);

解释程序将其转换为

console.log('rawTags : ' + rawTags.length + ' ' + rawTags.join(','));

这就是你最后得到一个字符串的原因。否则你的代码就可以了。

即便如此,您仍希望以相同的方式将其视为数组,并在数组中使用 JSON.stringify() ,例如:

console.log('rawTags : ' + rawTags.length + ' ' + JSON.stingify(rawTags));

它将保留括号表示法,但它不会成为一个数组。