Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Массив объектов и изменение его ключей (https://javascript.ru/forum/misc/81244-massiv-obektov-i-izmenenie-ego-klyuchejj.html)

fmmshadiq 28.10.2020 14:42

Массив объектов и изменение его ключей
 
Есть массив с объектами, поменять значение ключей в объектах у меня вышло. Но поменять сами ключи в нем не выходит.
Пример ниже меняет значения ключей, как сделать то же действие(перезаписать значение в верхнем регистре) но для самих ключей (name, lastname => NAME, LASTNAME).

var workers = [
    {
        name : 'maxim',
        lastname : 'ivanov'
    },
    {
        name : 'ivan',
        lastname: 'borisov'
    }
];

function namestoupper(...args) {
        for (var i=0; i<args.length; i++) {
            if (typeof (args[i].lastname, args[i].name) ==="string") {
                args[i].lastname = args[i].lastname.toUpperCase();
                args[i].name = args[i].name.toUpperCase();
            }
        }
}

namestoupper(...workers);
console.log(workers);


Просто для объекта я делал вот так :
var worker = {
    name : "andery",
    lastname : "petrov",
    age : 30,
    profession : "programmer"
};


function touppercase(obj) {
    for (var prop in obj) {
        if (typeof prop === "string") {
            obj[prop.toUpperCase()] = obj[prop];
            delete obj[prop];
        }
    }
}

touppercase(worker);
console.log(worker);


Но как сделать для массива с объектами?

рони 28.10.2020 14:53

fmmshadiq,
что на входе и что на выходе?

рони 28.10.2020 15:05

fmmshadiq,
:-?
<script>
const workers = [
    {
        name : 'maxim',
        lastname : 'ivanov'
    },
    {
        name : 'ivan',
        lastname: 'borisov'
    }
];
function namestoupper(arr) {
    arr.forEach(obj => {
    for (let key in obj) {
    obj[key.toUpperCase()] = obj[key];
    delete obj[key]
    }
    })
}
namestoupper(workers);
document.write(`<pre>${JSON.stringify(workers, "", 1)}</pre>`)
</script>

fmmshadiq 28.10.2020 15:06

На входе у нас массив с объектами
var workers = [

    {

        name : 'maxim',

        lastname : 'ivanov'

    },

    {

        name : 'ivan',

        lastname: 'borisov'

    }

];


На выходе нужно name и lastname чтобы были в виде NAME и LASTNAME (заглавными буквами)

fmmshadiq 28.10.2020 15:08

Цитата:

Сообщение от рони (Сообщение 530166)
fmmshadiq,
:-?
<script>
const workers = [
    {
        name : 'maxim',
        lastname : 'ivanov'
    },
    {
        name : 'ivan',
        lastname: 'borisov'
    }
];
function namestoupper(arr) {
    arr.forEach(obj => {
    for (let key in obj) {
    obj[key.toUpperCase()] = obj[key];
    delete obj[key]
    }
    })
}
namestoupper(workers);
document.write(`<pre>${JSON.stringify(workers, "", 1)}</pre>`)
</script>

Понял, спасибо :)

laimas 28.10.2020 15:18

Цитата:

Сообщение от fmmshadiq
На выходе нужно name и lastname чтобы были в виде NAME и LASTNAME

Интересно, а зачем?

fmmshadiq 28.10.2020 16:55

Цитата:

Сообщение от laimas (Сообщение 530169)
Интересно, а зачем?

Проосто начал изучать Javascript и задание похожее было в курсе. Вот и решил до конца разобраться с этим чтобы двигаться дальше )


Часовой пояс GMT +3, время: 04:24.