【问题标题】:js/jQuery - Converting array to stringjs/jQuery - 将数组转换为字符串
【发布时间】:2014-04-08 04:04:14
【问题描述】:

我用来存储到本地存储中的 2 个下拉列表存储为一个数组。 如果检测到任何数组,我该如何转换它然后转换它并将其存储为字符串?

这样的?

if( Object.prototype.toString.call( value ) === '[object Array]' ) {
  value.toString();
}

请看我的小提琴:http://jsfiddle.net/3u7Xj/137/

显示存储为:http://i.imgur.com/L78kGE7.jpg

本地存储功能:

save = function () {

        $('input, select, textarea').each(function () {
            var value = $(this).val();
             var   name = $(this).attr('name');

            if($(this).hasClass('checkers')){
                value = $(this).is(":checked")
                if(value){
                    value='on';
                }else{
                    value='off';
                }
            }

            if(this.name.match(/^multiselect_/)){//removes buggy append
               return false;
            }

            console.log('Saving');
            console.log(name + ':' + value);
            Survey[name] = value;
        });

        if (localStorage.getObj('Surveys') != null) {
            Surveys = localStorage.getObj('Surveys');
        }
         Surveys[$('#FirstName').val() + '.' + $('#LastName').val()] = Survey; //store in big list
        localStorage.setObj('Surveys', Surveys);

    }

【问题讨论】:

    标签: javascript jquery html arrays local-storage


    【解决方案1】:

    我会推荐使用 jQuery.encodeJSON()

    http://forum.jquery.com/topic/jquery-encodejson

    这样您可以将对象存储为 JSON 字符串。

    然后您可以使用 jQuery.parseJSON() 函数取回您的对象。

    https://api.jquery.com/jQuery.parseJSON/

    【讨论】:

      【解决方案2】:

      如果我理解正确,我想这可以工作:

      使用Array.isArray方法,然后使用JSON.stringify将数组转成字符串。

      【讨论】:

        【解决方案3】:

        将数组转换为字符串的最简单方法是array.join()。像这样调用你会得到一个逗号分隔的字符串,其中包含数组中的所有元素。如果您提供分隔符(例如 array.join('|')),您将获得一个由您提供的分隔符分隔的字符串。这适合您的储蓄功能的位置取决于您。

        【讨论】:

        • 那是我正在研究的东西。我该怎么写呢?
        • 现在这确实是一个好问题。我认为您需要使用 Array.isArray 进行检测,然后通过连接运行数组。要转换回一个数组(为了在不连接字符串的情况下轻松添加),您可以使用 string.split()。 (我仍在试图弄清楚为什么您的下拉列表存储为数组而不是仅选择的值,但如果我了解您的整个项目,这可能会更容易。)
        • 如果您想查看文档,它们是 Eric Hynds 多选小部件。 erichynds.com/blog/jquery-ui-multiselect-widget
        • 啊...好的。无论如何,我的猜测是多选。所以,是的,您应该能够获取小部件输出并对其执行 array.join 以获取您的值。可能需要一些额外的代码,但它肯定是可行的。
        【解决方案4】:
        for (var key in this) {
                 //console.log(key, this[key]); //log to console
                 if($.isArray(this[key])) {
                 this[key] = this[key].join(':'); //change array to string separated by :
                 }
        }
        

        【讨论】:

          猜你喜欢
          • 2018-02-18
          • 1970-01-01
          • 2022-07-21
          • 2014-05-08
          • 2022-11-18
          • 2023-01-12
          • 2019-03-14
          • 2019-12-17
          • 1970-01-01
          相关资源
          最近更新 更多