Подтвердить что ты не робот

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? Спасибо за любой намек!

4b9b3361

Ответ 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.