Как добавить объект в конец массива в javascript. швы array.push не работают для объекта здесь

avatar
Awwal
8 апреля 2018 в 10:15
41
3
1
let address_book = [];
    function myFunction() {
        let contact_name, contact_email, contact_phone;
        contact_name = document.getElementById("contact_name").value;
        contact_email = document.getElementById("contact_email").value;
        contact_phone = document.getElementById("contact_phone").value;

        address_book.push({
            name: contact_name,
            email: contact_email,
            phone: contact_phone
        })
            alert(address_book)
            console.log(tempObj)
    }

</script>

работает, если я помещаю любой вход в массив, но не работает, когда я помещаю объект

Источник
Justinas
8 апреля 2018 в 10:21
2

И как это не работает? Вы регистрируете tempObj, которого нет в коде.

Thomas Junk
8 апреля 2018 в 10:31
1

jsfiddle.net/qpvz45L8/2 показывает, что должно быть слово, если вы правильно назначите tempObj.

Jonas Wilms
8 апреля 2018 в 10:33
0

it doesnt work не является правильным описанием ошибки!

Ответы (3)

avatar
Vikasdeep Singh
8 апреля 2018 в 10:33
0

Сделайте как показано ниже:

let address_book = [];
    function myFunction() {

        var tempObj = {};
        tempObj.contact_name = document.getElementById("contact_name").value;
        tempObj.contact_email = document.getElementById("contact_email").value;
        tempObj.contact_phone = document.getElementById("contact_phone").value;

        address_book.push(tempObj)
        console.log(tempObj)
    }
            alert(address_book)

</script>

Объяснение:

Вы не создавали никаких объектов для помещения в массив. Сначала вам нужно создавать tempObj каждый раз, когда вы хотите вставить новый объект в ваш address_book. Вышеприведенный код отлично подойдет.

Vikasdeep Singh
8 апреля 2018 в 21:46
0

@Awwal, это здорово. Это помогло вам.

Vikasdeep Singh
8 апреля 2018 в 21:47
0

@Awwal, пожалуйста, проголосуйте и примите мой ответ, чтобы он был полезен и другим.

Vikasdeep Singh
20 мая 2018 в 06:51
0

@Awwal, спасибо. Вы тоже проголосовали? Если нет, пожалуйста, сделайте также. Спасибо!

avatar
Elijahhadasevich
8 апреля 2018 в 10:47
0

Я бы сделал так:

var address_book = [];
var i = 0;

function myFunction() {
        let contact_name, contact_email, contact_phone;
        contact_name = document.getElementById("contact_name").value;
        contact_email = document.getElementById("contact_email").value;
        contact_phone = document.getElementById("contact_phone").value;
        var user = {
            name: contact_name,
            email: contact_email,
            phone: contact_phone
        }
        address_book[i] = user;
        i++;
            alert(address_book)
    }
avatar
D. Pardal
8 апреля 2018 в 10:27
0

В этом коде есть некоторые проблемы:

  1. Вы не вызываете функцию.
  2. address_book.push работает, но преобразование объектов в строки приводит к чему-то вроде [object Object]. Если вам нужно представление объекта, используйте что-то вроде alert(JSON.stringify(address_book)).
  3. tempObj не определено.
Awwal
8 апреля 2018 в 12:17
0

Спасибо! я понял, что не могу предупредить массив. вот почему я получал [object Object]

D. Pardal
8 апреля 2018 в 12:21
0

Пожалуйста! Пожалуйста, не забудьте принять этот ответ, если он показался вам полезным, щелкнув зеленую кнопку рядом с ним.