Как использовать функцию для создания экземпляров значений в пустом объекте - PullRequest
0 голосов
/ 28 апреля 2018

У меня проблемы с добавлением значения к пустому объекту с помощью функции:

Я пытаюсь использовать этот код для генерации автомобильных объектов на основе случайных чисел, которые извлекают значения из массивов и добавляют их в пустой объект

var makes = ["BMW", "Audi", "Mercedez", "Range Rover", "Lexus"];
var models= ["M Series", "S Series", "AMG", "Explorer", "F Series"];
var years = [2003, 2017, 2018, 1993, 2006];
var colors = ["black", "red", "blue", "silver", "Red"];
var convertibles = [true, false];

var rand1 = Math.floor(Math.random() * makes.length);
var rand2 = Math.floor(Math.random() * models.length);
var rand3 = Math.floor(Math.random() * years.length);
var rand4 = Math.floor(Math.random() * colors.length);
var rand5 = Math.floor(Math.random() * 5) + 1; //using this one to determine passenger
var rand6 = Math.floor(Math.random() * 2); //using this one to determine whether it's a convertible or not

function makeCar(newCar){
    newCar = {
        make: makes[rand1],
        model: models[rand2],
        year: years[rand3],
        color: colors[rand4],
        passengers: rand5,
        convertible: convertibles[rand6],
        mileage: 0
    };

    return newCar;


}

var Beamer = {};

makeCar(Beamer);

console.log(Beamer);

Однако, когда я запускаю его в веб-консоли Firefox, я получаю:

{}
​
__proto__: {…}

Я использую учебник Headstart: javascript, и я увидел, что вы можете создать пустой объект, например, так:

var lookMaNoProps = { };

и затем вы можете динамически добавлять к указанному пустому объекту вот так:

var lookMaNoProps = { }; lookMaNoProps.age = 10;
if (lookMaNoProps.age > 5) {
lookMaNoProps.school = "Elementary";}

1015 *

Просто возникли небольшие проблемы, пытаясь понять, почему мой не проходит или это синтаксическая ошибка с моей стороны.

Спасибо

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Вы передаете объект из своей функции, но затем вы переназначаете новый объект, который вы возвращаете, а затем никогда не используете снова. Вы должны либо сделать:

function makeCar(){
    var newCar = {
        make: makes[rand1],
        model: models[rand2],
        year: years[rand3],
        color: colors[rand4],
        passengers: rand5,
        convertible: convertibles[rand6],
        mileage: 0
    };

    return newCar;


}

var Beamer = makeCar();

или если вы хотите изменить переданный объект:

function makeCar(newCar){
    Object.assign(newCar, {
        make: makes[rand1],
        model: models[rand2],
        year: years[rand3],
        color: colors[rand4],
        passengers: rand5,
        convertible: convertibles[rand6],
        mileage: 0
    });
}

var Beamer = {};

makeCar(Beamer);
0 голосов
/ 28 апреля 2018

Функция makeCar(newCar) возвращает newCar, но вы не сохраняете его на объекте Beamer, поэтому он остается пустым.

var makes = ["BMW", "Audi", "Mercedez", "Range Rover", "Lexus"];
    var models= ["M Series", "S Series", "AMG", "Explorer", "F Series"];
    var years = [2003, 2017, 2018, 1993, 2006];
    var colors = ["black", "red", "blue", "silver", "Red"];
    var convertibles = [true, false];
    
    var rand1 = Math.floor(Math.random() * makes.length);
    var rand2 = Math.floor(Math.random() * models.length);
    var rand3 = Math.floor(Math.random() * years.length);
    var rand4 = Math.floor(Math.random() * colors.length);
    var rand5 = Math.floor(Math.random() * 5) + 1; //using this one to determine passenger
    var rand6 = Math.floor(Math.random() * 2); //using this one to determine whether it's a convertible or not
    
    function makeCar(){
        var newCar = {
            make: makes[rand1],
            model: models[rand2],
            year: years[rand3],
            color: colors[rand4],
            passengers: rand5,
            convertible: convertibles[rand6],
            mileage: 0
        };
    
        return newCar;
    
    
    }
    
    var Beamer = {};
    
    Beamer = makeCar();
    
    console.log(Beamer);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...