JavaScript Array/Struct
Я хотел бы создать структуру в javascript. У меня есть информация, которую я хотел бы использовать, например:
array[1] = new Struct();
array[1].name = "parameter-name";
array[1].value = "parameter-value";
array[2] = new Struct();
array[2].name = "parameter-name2";
array[2].value = "parameter-value2";
Это может быть на другой странице с разными значениями, возможно, на элементе внутри моего массива, возможно, 2-20..
Позже, в моем общем javascript, я хотел бы проанализировать массив и продолжить с моими параметрами, например:
for(i=1 to length_of_my_array) {
_tag.array[i].name = array[i].value;
}
Как я могу понять это с помощью чистого javascript? Спасибо за любой намек!
Ответы
Ответ 1
Пока вам не нужны какие-либо причудливые функции, очень легко создавать такие структуры в JavaScript. Фактически, код, который вы опубликовали, почти сработает, если вы замените new Struct()
на это:
array[1] = {};
Это создает пустой объект, и вы можете поместить в него любые свойства, такие как name
и value
.
Чтобы создать массив, вы можете сделать что-то вроде этого:
var array = []; // empty array
// object literal notation to create your structures
array.push({ name: 'abc', value: 'def' });
array.push({ name: 'ghi', value: 'jkl' });
...
И для итерации по массиву:
for (var i = 0; i < array.length; i++) {
// use array[i] here
}
Ответ 2
Было бы неплохо узнать больше о проблеме, которую вы пытаетесь решить.
Я не думаю, что есть объект в JavaScript, называемый Struct, если вы его не определите.
Я думаю, что вы ищете объект JavaScript вместо Struct. Существует несколько способов создания нового объекта, и они могут быть вложены в массив или в другие объекты.
myArray[0] = new Object();
myArray[0].name = "parameter-name";
myArray[0].value = "parameter-value";
myArray[1] = new Object();
myArray[1].name = "parameter-name2";
myArray[1].value = "parameter-value2";
Обратите внимание, что я изменил код несколькими способами:
1. "array" называется "myArray", чтобы уточнить, что мы имеем в виду конкретный массив.
2. Первый экземпляр myArray равен 0. Массивы начинаются с 0 в Javascript.
3. Struct изменен на Object.
myarray = [
{
"name":"parameter-name",
"value":"parameter-value"
},
{
"name":"parameter-name2",
"value":"parameter-value2"
}
];
Это альтернативный синтаксис для выполнения того же самого. Он использует "литеральную нотацию" для обозначения массива (квадратные скобки) и объектов (фигурных скобок).
for(var i = 0; i < myArray.length; i++) {
for(key in myArray[i]) {
alert(key + " :: " myArray[i][key]);
}
}
Это будет цикл по массиву и предупредит вас о каждом свойстве объекта.
alert(myArray[0]['value']) //parameter-value
myArray[0]['value'] = "bar";
alert(myArray[0]['value']) //bar
Каждому свойству каждого объекта также может быть присвоено новое значение.
Ответ 3
Вы можете определить массивы и общие объекты в чистом JavaScript/json:
var array = []; // empty array
array.push({name: 'parameter-name', value: 'parameter-value'});
array.push({name: 'parameter-name2', value: 'parameter-value2'});
console.log(array);
// Output:
// [Object { name="parameter-name", value="parameter-value2"}, Object { name="parameter-name2", value="parameter-value2"}]
Вы также можете определить один и тот же массив:
var array = [
{name: 'parameter-name', value: 'parameter-value'},
{name: 'parameter-name2', value: 'parameter-value2'}
];
Что касается цикла по массиву:
for (var i = 0; i<array.length; i++) {
var elem = array[i];
console.log(elem.name, elem.value);
}
// Outputs:
// parameter-name parameter-value2
// parameter-name2 parameter-value2
Ответ 4
Я бы сохранил литералы объектов в массиве, например:
var myArray = [];
myArray[0] = {name:"some name", value:"some value"};
myArray[1] = {name:"another name", value:"another value"};
for (i=0; i < myArray.length; i++) {
console.log(myArray[i].name + ' / ' + myArray[i].value);
}
Ответ 5
var array = {paramName: 'paramValue', paramName2: 'paramValue2'};
for(i in array) {
_tag.i = array.i;
}
Ответ 6
В JavaScript не существует "Struct" Object
my_array = new Array();
my_array.push({name: 'john', age:31});
my_array.push({name: 'da_didi', age:120});
for (i=0; i<my_array.length; i++)
{
alert(my_array[i].name);
}
Ответ 7
// initialize empty array
var myArray = [];
// fill it with an object - the equivalent of a struct in javascript
myArray.push({
name: 'example-name'
value: 'example-value'
});
// repeat as neccessary
// walking through the array
for (var i = 0; i < myArray.length; i++)
{
// retrieving the record
record = myArray[i];
// and accessing a field
doSomething(record.name);
}
Ответ 8
Как насчет
function Struct(name, value) {
this.name = name;
this.value = value;
}
arr[0] = new Struct("name1", "value1");
Ответ 9
Объекты Javascript - это свободные объекты: свойства могут быть добавлены и удалены динамически. Таким образом, создание нового Struct(), как вы предлагаете, делает-не гарантией того, что возвращаемый объект всегда будет иметь свойства, которые вы ожидаете от него. Вы должны проверить доступность свойств в точке использования (утка):
var i, element;
for (i = 0; i < array.length; i++) {
element = array[i];
if (Object.hasOwnProperty.call(element, "name")
&& Object.hasOwnProperty.call(element, "value")) {
_tag[element.name] = element.value;
}
}
(Кроме того, я просто догадываюсь, что _tag - это сам объект, но это не было видно из вашего примера.)
Вероятно, вы можете использовать более сжатый синтаксис, но это сильно зависит от значений свойств. Например, вы можете использовать что-то вроде этого:
var i, element;
for (i = 0; i < array.length; i++) {
element = array[i];
if (element.name && element.value) {
_tag[element.name] = element.value;
}
}
Но вам нужно понять, что указанное выше условие будет ложным не только в том случае, если одно или оба свойства (имя и значение) undefined, но также и если одно или оба значения относятся к пустой строке, 0, NaN или false.