добавление новых объектов в массив из функции - PullRequest
0 голосов
/ 07 октября 2018

У меня уже есть массив таких объектов, как этот,

 details = [
    {
        'asjad': {
            'age': 23,
            'area': 'permiet'
        }
    }

У меня есть такая функция,

function addValues(_arr,_name,_age){

    _arr.push({
        _name : {
            age : _age
        }
    })

}


addValues(details,'foo',24);

Где я пытаюсь добавить значения в массив объектовпередавая значения объекта, который будет добавлен.

Но ожидаемый результат не foo, а вместо этого ключ добавляется как _name

Ответы [ 5 ]

0 голосов
/ 07 октября 2018

_arr.push({ [_name] : { age : _age } })

Создайте пару значений ключа json, для которой необходимо запустить ключ с [] для интерполяции ключа

0 голосов
/ 07 октября 2018

Просто измените приведенный выше код на этот.Вы достигнете своей потребности.

function addValues(_arr,_name,_age){

    _arr.push({
        [_name] : {
            age : _age
        }
    })

}
0 голосов
/ 07 октября 2018

Если вы определяете такой объект в JavaScript, ключом всегда будет строка - в вашем случае _name.Чтобы назначить динамическую переменную в качестве ключа для объекта, вам нужно использовать скобочную запись [].Значение, однако, оценивается как выражение.В вашем случае _age оценивается, потому что это значение, а не ключ.

Вы можете легко исправить, например, с помощью этого примера:

function addValues(_arr, _name, _age){

    var object = {};
    object[_name] = {
        age: _age
    };
    _arr.push(object);

}

Это много способовдля объявления объекта в JavaScript:

Встроенное объявление:

var object = {
   _name: '123'
};

_name всегда будет константной строкой.

Точечная нотация:

var object = {};
var object._name = '123';

→ В точечной нотации _name также всегда будет постоянной строкой.

Нотация в скобках:

var object = {};
var object[_name] = '123';

→ В скобочных обозначениях _name является оцененным выражением.В этом случае имя переменной _name.Вы также можете передать строку, используя object['_name'].

Имена вычисляемых свойств:

Как указано в других ответах, в ES6 (более новая версия JavaScript)(которая не полностью поддерживается всеми браузерами, но может быть перенесена в ES5), вы также можете использовать вычисленные имена свойств :

var object = {
   [_name]: '123'
};

→ В этой записи _nameбудет оцениваться, и его значение будет ключевым в этом объекте.Имейте в виду, что у вас не будет поддержки IE без переноса этого фрагмента.

0 голосов
/ 07 октября 2018
function addValues(_arr,_name,_age){

    _arr.push({
        [_name] : {
            age : _age
        }
    })

}


addValues(details,'foo',24);
0 голосов
/ 07 октября 2018
function addValues(_arr,_name,_age){

    var newItem = {};
    newItem[_name] = {};
    newItem[_name]['age'] = _age;

    _arr.push(newItem);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...