代码之家  ›  专栏  ›  技术社区  ›  XMen

将字符串转换为数组

  •  0
  • XMen  · 技术社区  · 15 年前

    在my user.data.crop中,位置值为“[100,100,200,200]”;

                var crop_position=user.data.crop_position.slice(1,user.data.crop_position.length-2);
            $('#cropbox').Jcrop({
                setSelect: crop_position,
                onChange: showPreview,
                onSelect: showPreview,
                aspectRatio: 1
            });
    

    这样做,我的jcrop不会在设置位置选择我能做什么 这是因为我要传递的字符串,我如何才能移除它,

    我知道这是一个愚蠢的问题,但我多次遇到这种问题,也请建议我以后不要出现这种问题。

    当做

    拉胡尔

    2 回复  |  直到 15 年前
        1
  •  0
  •   PleaseStand    15 年前

    这个 Jcrop Manual setSelect 采用数组,而不是字符串。

    [100, 100, 200, 200] // rather than
    '[100, 100, 200, 200]'
    

    如果不能更改输入格式,至少可以使用 $.parseJSON 在传递给jcrop之前:

    var crop_position = $.parseJSON(user.data.crop_position);
    

    编辑: 如果需要(字符串值中实际存在双引号),可以使用 帕西森 两次,第一次解码编码字符串值,第二次解码编码字符串内的数组:

        var crop_position = $.parseJSON($.parseJSON(user.data.crop_position));
    

    或者只是去掉周围的双引号 帕西森 :

        var crop_position = $.parseJSON(user.data.crop_position.slice(1, -1));    
    
        2
  •  0
  •   gblazex    15 年前

    设置选择 -数组[X,Y,X2,Y2]设置初始选择区域

    所以你需要一个数组而不是字符串 setSelect . 你为什么不做 user.data.crop_position 数组 本身?如果无法更改表示,可以使用简单算法进行转换:

    var pos  = '"[ 100, 100, 200, 200 ]"'; // user.data.crop_position
    var crop_position = pos.replace(/["\[\] ]/g, '').split(',');
    for (var i = crop_position.length; i--;) {
      crop_position[i] = +crop_position[i]; 
    }
    

    现在您得到了一个值数组而不是字符串。