Перевод объекта в массив
У меня есть объект:
var myObj = {key1: "value1", key2: "value2", key3: "value3"}; Подскажите, как его перевести в массив : ["key1":"value1","key2":"value2","key3":"value3 "] Спасибо! |
if (!Object.keys) Object.keys = function (o) { if (o !== Object(o)) throw new TypeError('Object.keys called on a non-object'); var k = [], p; for (p in o) if (Object.prototype.hasOwnProperty.call(o, p)) k.push(p); return k; } var myObj = {key1: "value1", key2: "value2", key3: "value3"}; var result = [], i; var keys = Object.keys(myObj); for (i = 0; i < keys.length; i++) { result.push(keys[i] + ":" + myObj[keys[i]]); } alert(result); вариант |
Спасибо, а что-то по проще? (я уверен можно уложиться в пару строк)
|
Вариант2 :)
var myObj = {key1: "value1", key2: "value2", key3: "value3"}; var result = [], p; for (p in myObj) if (myObj.hasOwnProperty(p))result.push(p + ":" + myObj[p]); alert(result); первый быстрее в современных броузерах то будет |
Спасибо большое :)
|
Еще уточнение, у нас получилось:
["key1:value1", "key2:value2", "key3:value3"] а можно ли , и имеет ли смысл делать такой массив: ["key1":"value1","key2":"value2","key3":"value3 "] ? |
["key1":"value1","key2":"value2","key3":"value3 "] - такого массива быть не может, а переводить объект в массив ["key1:value1", "key2:value2", "key3:value3"] не имеет смысла.
|
если честно, не зная задачи не смогу сказать
2 варианта строка, а кавычки зачем не скажу надо понимать для чего это делается. Может и объект тогда подойдет :) |
Причин нет -- просто попросили такое сделать.
Ладно, спасибо! |
Можно использовать массив массивов, в котором первый массив, это ключи, а второй их значения, если по каким либо причинам это будет удобнее объекта. А вот ассоциативных массивов в JS нет.
|
Часовой пояс GMT +3, время: 14:50. |