JS вложенные массивы - PullRequest
       6

JS вложенные массивы

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

Эй, я пытаюсь создать вложенный массив в JS

    var lines = new Array(
                    "0"= new Array(
                                0['time']="10:00:00",
                                0['user']="User1",
                                0['content']="Line1",
                                ),
                    "1"= new Array(
                                1['time']="20:00:00",
                                1['user']="User2",
                                1['content']="Line2",
                                ),
                    "2"= new Array(
                                2['time']="30:00:00",
                                2['user']="User3",
                                2['content']="Line3",
                                ),
                    );

Отладчик Chrome сообщает мне), в конце первого вложенного массива находится «Неожиданный токен»

Ответы [ 6 ]

31 голосов
/ 21 октября 2010

Из вашего кода похоже, что вы пытаетесь использовать массивы в стиле PHP в JavaScript.Массивы JavaScript не работают как массивы PHP.Вот кое-что, что с большей вероятностью сработает:

const lines = [
  { time: '10:00:00',
    user: 'User1',
    content: 'Line1',
  },
  { time: '20:00:00',
    user: 'User2',
    content: 'Line3',
  },
  { time: '30:00:00',
    user: 'User3',
    content: 'Line3',
  },
];

Чтобы объяснить немного, в JavaScript вы создаете новый массив, подобный этому:

const myArray = [ 5, 10, 15 ];

Квадратные скобки ([])обозначают начало и конец массива, а запятые (,) разделяют элементы массива.Затем, чтобы получить доступ к элементам, мы должны сделать что-то вроде этого:

alert( myArray[0] );

... что даст 5 (первый или «0-й» элемент в массиве).

Теперь, когда в PHP есть ассоциативный массив (array('a' => 1, ...)), в JavaScript нет «ассоциативного массива»;скорее вы используете «литерал объекта», например:

const myObject = { a: 5, b: 10, c: 15 };

Это создает новый объект со свойствами (вы можете думать о них как о ключах) с именами a, b и c.Есть два способа получить доступ к свойству:

alert( myObject['b'] );
alert( myObject.b );

В обоих случаях будет дано 10 (значение, которое мы присвоили свойству b).

Теперь вернемся к вашемуупражнение.Вы увидите, что здесь мы создали массив ([]) и дали ему три элемента, каждый из которых является литералом объекта ({}).Например, чтобы получить доступ к свойству user первого элемента, мы должны сделать следующее:

alert( lines[0].user ); // => "User1"

Редактировать: Если вы хотите назвать элементы внешнего массива, ондолжен быть изменен на литерал объекта и может быть вложен следующим образом:

const lines = {
  one: {
    time: '10:00:00',
    user: 'User1',
    content: 'Line1',
  },
  two: {
    // ...
  },
  // ...
};

Я назвал элементы one, two и т. д. для ясности, но вы можете использовать любые значенияВы, пожалуйста.Однако, если вы намереваетесь использовать числовые имена свойств - 0, 1, 2 и т. Д. - как в вашем примере кода, вы также можете использовать другой массив, а не объект.В отличие от PHP, JavaScript не допускает «пробелов» в массиве - они будут заполнены undefined.Например:

const myArr = [1, 2];
myArr[5] = 3;
alert( myArr ); // => [ 1, 2, undefined, undefined, undefined, 3 ];
3 голосов
/ 21 октября 2010

попробуйте

var lines = [ {'time': 'the time', 'user': 'the user', 'content': 'the content'}, {'time': 'the time', 'user': 'the user', 'content': 'the content'}];
1 голос
/ 15 апреля 2018

вот простой пример, который решит рассказать вам о массиве в боковом массиве в java-скрипте, если элемент четный, заменить его строкой «четный», для нечетного заменить на «нечетный»

 var numbers = [
        [243, 12, 23, 12, 45, 45, 78, 66, 223, 3],
        [34, 2, 1, 553, 23, 4, 66, 23, 4, 55],
        [67, 56, 45, 553, 44, 55, 5, 428, 452, 3],
        [12, 31, 55, 445, 79, 44, 674, 224, 4, 21],
        [4, 2, 3, 52, 13, 51, 44, 1, 67, 5],
        [5, 65, 4, 5, 5, 6, 5, 43, 23, 4424],
        [74, 532, 6, 7, 35, 17, 89, 43, 43, 66],
        [53, 6, 89, 10, 23, 52, 111, 44, 109, 80],
        [67, 6, 53, 537, 2, 168, 16, 2, 1, 8],
        [76, 7, 9, 6, 3, 73, 77, 100, 56, 100]
    ];

    for(i=0; i < numbers.length ; i++ ) 
    {
    for(j=0 ; j < numbers[i].length; j++)
    {
        if(numbers[i][j]%2===0)
        {
            numbers[i][j]="even";
        }
        else
        numbers[i][j]="odd";


    }

    }
    console.log(numbers);
0 голосов
/ 14 июня 2019

Простой способ добавить все вложенные значения

const order = [
    {
        "quantity": 1,
        "id": "3833085c-864b-47d7-b2a8-e37ef60d3691",
        "val": {
            "sellable": true,
            "out_of_stock": false,
            "discount": null,
            "pack_size": "50",
            "productPrice": 29.5,
            "unit_price": 0.59,
            "name": "Butter Chilli",
            "tamil_name": null,
            "id": "3833085c-864b-47d7-b2a8-e37ef60d3691",
            "price": 29.5,
            "wholesale_price": 29.5,
            "stock": 100,
            "cost_price": null,
            "unit_weight": "50g"
        }
    },
    {
        "quantity": 2,
        "id": "75fe08ab-8438-42db-bb26-da77568b1fea",
        "val": {
            "sellable": true,
            "out_of_stock": false,
            "discount": null,
            "pack_size": "15",
            "productPrice": 29.25,
            "unit_price": 1.95,
            "name": "Anchovy (Nethaly) H/O(Small)",
            "id": "75fe08ab-8438-42db-bb26-da77568b1fea",
            "price": 29.25,
            "wholesale_price": 29.25,
            "stock": 100,
            "unit_weight": "700gm"
        }
    }
]

const totalAmount = (order) => {
    return order.map(product => product.val.price * product.quantity ).reduce((a, b) => a + b, 0).toFixed(2)
}

// Total value is 
console.log(totalAmount(order))
88.00
0 голосов
/ 22 июня 2016

ну, я не думаю, что проблема в квадратных скобках, потому что в javaScript массивы могут быть объявлены любым из следующих способов -

var arr = new Array(element0, element1, ..., elementN);
var arr = Array(element0, element1, ..., elementN);
var arr = [element0, element1, ..., elementN];

.ссылка .По моему мнению, проблема может заключаться в выборе ключей.
PS Я новичок и просто учусь здесь и там. Если я ошибся, поправьте меня, потому что этот ТАК вопрос привел меня в замешательство.

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

маленький, стандартный, ' глаз ' исправление


var lines = [{
    'time': 'the time',
    'user': 'the user',
    'content': 'the content'
},
{
    'time': 'the time',
    'user': 'the user',
    'content': 'the content'
}];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...