2013-12-03 4 views
1

Это просто, я хочу добавить неопределенный элемент в массив, скажем, у меня есть массив Punkt, и у меня есть punkt[0] = x: 15, y:"16s". Как я знаю, например. у элемента будет всего 4 штуки. Я хочу добавить неопределенный элемент в punkt[3], так что остальные punkt[1] и punkt[2] станут undefined. Мне нужно это, потому что где-то позже в моем коде я делаю чек на undefined и выкидываю ошибку на основе этого.Как добавить неопределенный элемент в массив?

Стойки является объектом, который содержит массив объектов Punkt

punkt[0] = { 
x: 5, 
y: "16s" } 

Что я пробовал:

racks[trimdevID].punkt[$('#posTable tr:last td:first').text()] = undefined; 
+0

Хорошо, что происходит, когда вы пытаетесь это сделать? Вы получили сообщение об ошибке? Какова ценность выражения jQuery '.text()'? – Pointy

+0

Почему вы предварительно заполняете массив? Если вы попытаетесь получить доступ к 'punkt [1]', он вернет 'undefined'. Какая польза от того, чтобы положить там 'undefined'? –

+0

Вы просто пытаетесь очистить свой массив? На самом деле вам никогда не нужно указывать индекс массива undefined, вы должны просто удалить этот конкретный индекс с помощью сплайсинга. –

ответ

1

Вы, конечно, можете использовать программу нажатием() (см http://www.w3schools.com/jsref/jsref_push.asp). В вашем примере, что будет выглядеть примерно так:

// push two undefined elements: 
racks[trimdevID].punkt.push(undefined) 
racks[trimdevID].punkt.push(undefined) 

Это предполагает, что у вас уже есть ровно два элемента в массиве, и вы хотите точно четыре элемента. Более общая версия:

var newLength = 4; 
for (var idx = racks[trimdevID].punkt.length; idx <= newLength; idx++) 
{ 
    racks[trimdevID].punkt.push(undefined); 
} 

Я считаю, что другие подобные вопросы о стеке также имеют тот же ответ. Вы можете посмотреть на этот вопрос для получения дополнительных примеров (How to initialize an array's length in javascript?)

+0

да, но я хочу нажать на определенный индекс – Faarbhurtz

+0

Спасибо за ссылку, инициализация массива lenght также помогает мне – Faarbhurtz

2

undefined является built in property of the global object, и это действительно то, что вам нужно, так что такой код, например is working:

var arr = []; 
arr.push(undefined); 
alert(typeof arr[0]); 

Это означает, что ваш проблема в другом месте, от быстрого поиска, потому что вы используете не целочисленный индекс. Попробуйте это вместо того, чтобы и он должен работать:

var index = parseInt($('#posTable tr:last td:first').text(), 10); 
if (!isNaN(index)) 
    racks[trimdevID].punkt[index] = undefined; 
+0

if (changePos Faarbhurtz

+0

} 'undefined' не является ключевым словом. –

+1

@BlueSkies неправильная семантика ... не ключевое слово, и вы можете объявить локальную переменную с тем же именем, но это все еще то, что я имел в виду. Исправлена ​​семантика. :) –

1

Вы можете попробовать .push в массиве

yourArray.push(undefined) 
i = 0; //Position Of Undefined 
console.log(typeof yourArray[i]) 
+0

да, но мне нужно с конкретным индексом – Faarbhurtz

Смежные вопросы