2016-01-30 3 views
-2

При добавлении пары значений имени нового объект:Javascript Стенография для присвоения значений пары имени объекта

function example() { 

    var address = {}; //I'd like to omit this line somehow, is it possible? 
    var values = ["Dog", "Cat", "Giraffe", "Monkey", "Goose"] 
    for (i=0; i <5; i++) { 

     address[i] = values[i] 

    } 

} 

Есть ли запись, которая позволяет мне опускать комментировали выше линии?

+0

Откуда «ключ» и «значение»? – Bergi

+4

Почему вы хотите опустить это? Если вам нужен «новый объект *», вам нужно будет так сказать. Какова ваша фактическая проблема? – Bergi

+0

Есть ли способ сделать это в одной строке? – Andrew

ответ

0

Вы можете создать массив такого типа, используя грамматику литерала объекта или массива, или методы объекта/массива.

Массив массивов:

// Using array literal grammar 
var arr = [[value1, value2, value3], [value1, value2]] 

// Creating and pushing to an array 
var arr = []; 
arr.push([value1, value2, value3]); 

Объект массивов:

// Using object literal grammar 
    var obj = { "key": [value1, value2, value3], "key2": [value1, value2] } 

    // Creating object properties using bracket or dot notation 
    var obj = {}; 
    obj.key = [value1, value2, value3]; 
    obj["key2"] = [value1, value2]; 
0

Если вы ищете альтернативный способ сделать именно то, что делает ваш пример, вы можете использовать Array.prototype.reduce. Если вы понимаете, как это работает, то, по моему мнению, это намного чище.

var vals = ["Dog", "Cat", "Giraffe", "Monkey", "Goose"]; 

function assignNameVal(arr){ 
    return arr.reduce(function(prev, curr, index, array){ 
     prev[index] = curr;  // curr is each element in arr for each iteration 
     return prev;    // returned value is the prev arg for next execution in iteration 
    }, {});      // {} is first value of prev 
} 
Смежные вопросы