JavaScript拆分,更改零件编号

问题描述:

我有一个动态生成的大字符串,我正在分解。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

数组是从零开始,所以其实在你的版本你有指数0到399,而不是1到400

我不太清楚为什么你要100个项目填充在数组的开头,但为了它的价值,这里有一个做你想做的简短方法。这也是为数不多的几次Array构造函数实际上是有效的方法之一:

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

我们可以通过使用unshift()方法在数组开头添加元素。这是使用它的一般语法。

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

这里scripts是我们的数组对象,我们通过使用unshift()方法增加了两个新的元素,VAL01和VAL02,在这个数组的开头。

因此,您可以使用unshift在分割字符串之前添加100个数组元素。

如果您不想在开始时使用100个填充元素(索引0至99),则不需要使用数组。数组总是与索引保持一致。所以你可能正在寻找一个对象。

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

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

你确定你需要这个吗?你可以简单地从你的偏移量减去100来达到这个值。为此,JavaScript中的数组是零索引的。这意味着可以使用myString[0]而不是myString[1]访问第一个项目。

使用函数来读取偏移值

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