首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将逗号和哈希分隔的字符串转换为数组

将逗号和哈希分隔的字符串转换为数组
EN

Stack Overflow用户
提问于 2012-10-31 03:00:44
回答 2查看 547关注 0票数 1

我使用jquery sortable()来创建可拖动和可排序的框。

JQuery代码如下所示:

代码语言:javascript
复制
    $('.column').sortable({
    connectWith:                '.column',
    handle:                     '.header',
    cursor:                     'move',
    placeholder:                'placeholder',
    forcePlaceholderSize: true,
    opacity: 0.8,
    stop: function(event, ui)
        {
            $(ui.item).find('h2').click();
            var sortorder='';

            $('.column').each(function(){
                var itemorder=$(this).sortable('toArray');
                var columnId=$(this).attr('id');
                sortorder+=columnId+'='+itemorder.toString()+'&';
            });
            sortorder = sortorder.substring(0, sortorder.length - 1)
            console.log('SortOrder: '+sortorder);
            //localStorage.setItem(JSON.stringify(sortorder).sortable);
            localStorage.setItem("sortables", sortorder);
            //localStorage.getItem("sortables");
        }
    }).disableSelection();

它在排序后生成的字符串如下所示,然后将其保存到本地存储中:

Col1=box3、box2、box1&col2=box4

我很难将它转换回数组,我还想知道一旦它被转换回数组,我如何获取这个数组,并将其应用于框的排序顺序?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-31 21:54:54

一旦您从localStorage中存储和检索了排序顺序,您就需要遍历每一列,以它们以前在列中的相同顺序将portlets“附加”到它们。因此,最后一个portlet将被追加到最后,第一个portlet将被追加到第一个。

代码如下:

代码语言:javascript
复制
    var str = localStorage.getItem("sortables." + window.location.pathname);
    if (str) {
        var cols = str.split('&');
        for (var i = 0; i < cols.length; i++) {
            var col = cols[i].split('=');
            if (col[1].length > 0) {
                var vals = col[1].split(',');
                for (var j = 0; j < vals.length; ++j) {
                    console.log('appending ' + vals[j] + ' to ' + col[0]);
                    $('#'+col[0]).append($('#'+vals[j]));
                }
            }
        }
    }

这里是小提琴:http://jsfiddle.net/bWXZU/10/

请注意,您需要正确处理以下几种情况:(上面的代码就是这样做的)

  1. When nothing is is in local storage
  2. When a column no items

(当本地存储中没有任何项时

  • 列没有项

)

希望这能对你有所帮助!

约翰..。

票数 1
EN

Stack Overflow用户

发布于 2012-10-31 03:06:41

尝试如下所示的简单迭代来创建一个object,其键为col1,值为数组[box3, box2, box1]

演示: http://jsfiddle.net/2yt5y/2

代码语言:javascript
复制
var str = 'col1=box3,box2,box1&col2=box4';

var cols = str.split('&');
var result = {};
for (var i = 0; i < cols.length; i++) {
   var col = cols[i].split('=');
   var vals = col[1].split(',');

   result[col[0]] = vals;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13145923

复制
相关文章

相似问题

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