var key = ['key', 'key', 'key'];
var val = ['val1', 'val2', 'val3'];
{ 'key': 'val1', 'key': 'val2', 'key': 'val3' }
? { 'key': 'val1', 'key': 'val2', 'key': 'val3' }
само по себе тождественно { 'key': 'val3' }
Потому как интерпретатор проходит по всему выражению и по ключу видит указатель на область памяти только с 'val3'
Как оказалось, исходное выражение является вполне корректным, но не оптимальным. var keys = ['key1', 'key2', 'key3'];
var values = ['val1', 'val2', 'val3'];
var keyValObj = {};
key.forEach(function(item, index) {
keyValObj[item] = values[index];
});
console.log(keyValObj);
obj = {
"key1":"val1",
"key2":"val2",
"key3":"val3"
}
{ 'key': 'val1', 'key': 'val2', 'key': 'val3' } // Ваш пример .. Как вы доберётесь до нужного если надо будет достать по ключу ?