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

javascript拆分,更改部件号

  •  2
  • Mircea  · 技术社区  · 15 年前

    我有一个动态生成的大字符串,我正在拆分它。

    var myString="val1, val, val3, val4..... val400"
    

    我在这根绳子上做了一个简单的分割,

    myString= myString.split(',')
    

    获取以下内容:

    myString[1] // gives val1
    myString[2] // gives val2
    myString[3] // gives val3
    .
    .
    .
    myString[400] // gives val400
    

    有没有办法做到以下几点?

    myString[101] // gives val1
    myString[102] // gives val2
    myString[103] // gives val3
    .
    .
    .
    myString[500] // gives val400
    
    5 回复  |  直到 15 年前
        1
  •  5
  •   Tim Down    15 年前

    数组是基于零的,所以实际上在您的版本中,索引0最多为399,而不是1到400。

    我不太清楚为什么要在数组的开头填充100个项,但是为了它的价值,这里有一个很短的方法可以满足您的需要。它也是 Array 构造函数实际上很有用:

    var parts = new Array(100).concat(myString.split(','));
    
        2
  •  1
  •   Peter Mortensen Pieter Jan Bonestroo    15 年前

    我们可以使用 unshift() 方法。下面是使用它的一般语法。

    scripts.unshift("VAL01","VAL02");
    

    在这里 scripts 是数组对象,我们将在数组的开头添加两个新元素val01和val02,方法是使用 unSHIFT() 方法。

    所以你可以使用 unshift 在拆分字符串之前添加100个数组元素。

        3
  •  0
  •   poke    15 年前

    如果不希望在开始处使用100个填充元素(索引0到99),则不希望使用数组。数组总是与索引连续。所以你可能在寻找一个物体。

    var obj = {}
    for ( var i = 0; i < arr.length; i++ )
    {
        obj[ i + 100 ] = arr[i];
    }
    

    但是你不应该这样做,因为使用一个对象会降低你工作的可能性。如果您不想在开始处再添加100个元素(在这种情况下,您只需将这些元素添加到现有数组的开始处),那么您应该使用原始数组,并在访问时手动移动索引。

        4
  •  0
  •   jwueller    15 年前

    你确定你需要这个吗?只需从偏移量中减去100,就可以得到该值。为此,javascript中的数组是零索引的。这意味着可以使用 myString[0] 而不是 myString[1] .

        5
  •  0
  •   Amarghosh    15 年前

    使用函数读取偏移值

    function getOffSetValue(arr, index, offset)
    {
        if(offset == undefined)
             offset = 100;
        return arr[index - offset];
    }
    
    var st = "val1,val2,val3,val4,val5";
    var a = st.split(',');
    
    console.log(getOffSetValue(a, 102));