JavaScript Split, изменить номер детали - PullRequest
2 голосов
/ 18 октября 2010

У меня есть динамически генерируемая большая строка, которую я разделяю.

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 ]

5 голосов
/ 18 октября 2010

Массивы начинаются с нуля, поэтому фактически в вашей версии у вас есть индексы от 0 до 399, а не от 1 до 400.

Я не совсем уверен, почему вы хотите, чтобы 100 элементов были добавлены в начало массива, но для чего бы это ни стоило, вот короткий способ сделать то, что вы хотите. Это также один из немногих случаев, когда конструктор Array действительно полезен:

var parts = new Array(100).concat(myString.split(','));
1 голос
/ 18 октября 2010

Мы можем добавить элементы в начале массива, используя метод unshift().Вот общий синтаксис для его использования.

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

Здесь scripts - это наш объект массива, и мы добавляем два новых элемента, VAL01 и VAL02, в начало этого массива с помощью метода unshift().

Таким образом, вы можете использовать unshift для добавления 100 элементов массива перед строкой разбиения.

0 голосов
/ 18 октября 2010

Используйте функцию для считывания значения смещения

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));
0 голосов
/ 18 октября 2010

Вы уверены, что вам это нужно? Вы можете просто вычесть 100 из своего смещения, чтобы получить это значение. Для этого массивы в JavaScript индексируются с нуля. Это означает, что к первому элементу можно получить доступ, используя myString[0] вместо myString[1].

0 голосов
/ 18 октября 2010

Если вы не хотите, чтобы в начале было 100 элементов заполнения (индекс от 0 до 99), вы не хотите использовать массив.Массивы всегда непрерывны с индексами.Итак, вы, вероятно, ищете объект.

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

Однако вы не должны делать это так, потому что использование объекта уменьшает ваши возможности для работы.Если вы не хотите добавлять еще 100 элементов в начале (в этом случае вы можете просто добавить их в начало существующего массива), тогда вам лучше работать с исходным массивом и просто сдвигать индекс вручную при доступеэто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...