将字符串转换为数组

时间:2010-11-13 11:47:21

标签: javascript jquery jcrop

我的user.data.crop_position值中的

是“[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不是在设置位置选择我能做什么 这是由于我传递的字符串如何删除它,

我知道这是一个愚蠢的问题,但我很多时候也遇到过这种问题,请告诉我将来这些问题不会来。

问候

rahul

2 个答案:

答案 0 :(得分:0)

  

setSelect - array [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]; 
}

现在你有一个值数组而不是字符串。

答案 1 :(得分:0)

Jcrop Manual表示setSelect采用数组,而非字符串。

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

如果您无法更改输入格式,至少可以在将其传递给Jcrop之前使用$.parseJSON对其进行解析:

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

编辑:如果有必要(双引号实际存在于字符串值中),您可以使用$.parseJSON两次,首先解码编码的字符串值,然后再解码数组内的数组编码的字符串:

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

或者在$.parseJSON之前删除周围的双引号:

    var crop_position = $.parseJSON(user.data.crop_position.slice(1, -1));