2010-10-18 64 views
2

我有一個動態生成的大字符串,我正在分解。JavaScript拆分,更改零件編號

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 
+0

注意,一個數組索引'0'開始。 – poke 2010-10-18 09:14:04

回答

5

數組是從零開始,所以其實在你的版本你有指數0到399,而不是1到400

我不太清楚爲什麼你要100個項目填充在數組的開頭,但爲了它的價值,這裏有一個做你想做的簡短方法。這也是爲數不多的幾次Array構造函數實際上是有效的方法之一:

var parts = new Array(100).concat(myString.split(',')); 
1

我們可以通過使用unshift()方法在數組開頭添加元素。這是使用它的一般語法。

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

這裏scripts是我們的數組對象,我們通過使用unshift()方法增加了兩個新的元素,VAL01和VAL02,在這個數組的開頭。

因此,您可以使用unshift在分割字符串之前添加100個數組元素。

0

如果您不想在開始時使用100個填充元素(索引0至99),則不需要使用數組。數組總是與索引保持一致。所以你可能正在尋找一個對象。

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

但是你不應該這樣做,因爲使用一個對象會降低你的工作可能性。如果您不想在開始時添加另外100個元素(在這種情況下,您可以將這些元素添加到現有數組的開頭),那麼您應該使用原始數組,並且只需在訪問時手動移動索引它。

0

你確定你需要這個嗎?你可以簡單地從你的偏移量減去100來達到這個值。爲此,JavaScript中的數組是零索引的。這意味着可以使用myString[0]而不是myString[1]訪問第一個項目。

0

使用函數來讀取偏移值

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));