Создайте пустой двумерный массив с ключом и вставьте в него значения

Это пример моего образца массива. Я хочу получить такой массив,

        var myObj = { 
            PlannedStartDate: { value: '123', mandatory: 'yes' }, 
            PlannedEndDate: { value: '456', mandatory: 'no' }, 
            Days: { value: '123', mandatory: 'yes' } 
        };

OutPut-1: -

enter image description here

Я хочу получить вышеуказанный массив с помощью метода push() или любого другого процесса. Итак, для этого я попробовал вот так,

var post_outage_array = [];
post_outage_array.push({"PlannedStartDate" : '123'});
console.log(post_outage_array);

Но это дает мне результат ниже,

enter image description here

Я даже пробовал с post_outage_array['0']['PlannedStartDate'] = '123';.

Итак, моя цель - сначала объявить пустой двумерный массив и передать значения с помощью ключа, и я хочу получить результат, как на изображении выше. (OutPut-1)

Изменить: - Согласно предложению gurvinder372.

    var post_outage_array = {};
    post_outage_array["PlannedStartDate"]["value"] = '123';
    post_outage_array["PlannedStartDate"]["mandatory"] = 'yes';

Когда я пытался сделать это таким образом. У меня следующая ошибка.

index.php:15 Uncaught TypeError: Cannot set property 'value' of undefined

Нет абсолютно никакой разницы между тем, что у вас есть, и тем, что вы хотите.

31piy 11.04.2018 12:16

Ожидаемый результат - объект

Nikhil Aggarwal 11.04.2018 12:17

@ 31piy. Я хочу изменить 0 на "PlannedStartDate" в коротком имени key.

WebRence 11.04.2018 12:17
var post_outage_array = {}; post_outage_array["PlannedStartDate"] = '123';
gurvinder372 11.04.2018 12:19

это невозможно

Joe Warner 11.04.2018 12:19

Ваш ожидаемый результат не является массивом. Так зачем вы его создаете?

H77 11.04.2018 12:19

@ H77. Хорошо, так что мне нужно сменить var post_outage_array = {} Верно? Но как я могу протолкнуть его для двумерного массива.

WebRence 11.04.2018 12:20

Понятия не имею, что ты имеешь в виду. Что @ gurvinder372 предлагает решение, которое вам нужно?

H77 11.04.2018 12:22

@ h77. Да. его предложение работает для меня. Мне нужен точно такой же результат, который предлагает gurvinder372. Убедитесь, что я отредактировал свой вопрос с ошибкой.

WebRence 11.04.2018 12:23
2
9
48
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Похоже, что вам не нужен массив, а нужно динамически добавлять свойства к объекту (возможно, в цикле?).

Это то, что тебе нужно?

// method 1

var post_outage = {};
post_outage["PlannedStartDate"] = {};
post_outage["PlannedStartDate"]["value"] = '123';
post_outage["PlannedStartDate"]["mandatory"] = 'yes';

console.log(post_outage);

// method 2
var post_outage = {};
post_outage["PlannedStartDate"] = {
  value: "123",
  mandatory: "yes"
};

console.log(post_outage);

Ой, чувак. Спасибо, все работает. Мне нужно снова инициализировать post_outage["PlannedStartDate"] = {};. Работает.

WebRence 11.04.2018 12:27

Вы НЕ ожидаете массива, но вместо этого ожидаете объект, сформированный из массивов.

для этого определены три переменные массива, например:

var Days             = [] ;
var plannedEndDate   = [] ;
var plannedStartDate = [] ;

затем отправьте значения каждому с помощью метода push, а затем:

var finalObject = {} ;
finalObject = {
        Days             : JSON.parse(JSON.stringify(Days            )) ,
        plannedEndDate   : JSON.parse(JSON.stringify(plannedEndDate  )) ,
        plannedStartDate : JSON.parse(JSON.stringify(plannedStartDate))  } ;

Другие вопросы по теме