Как присоединить ассоциативный массив в строку
Я пытаюсь сделать это сейчас, и мне интересно, есть ли "самый используемый" метод для объединения ассоциативного массива (его значения) в строку, ограниченную символом.
Например, у меня есть
var AssocArray = { id:0, status:false, text:'apple' };
Строка, полученная в результате объединения элементов этого объекта, будет
"0, false, 'apple'" or "0, 0, 'apple'"
если мы присоединяем их к символу ","
Есть идеи? Спасибо!
Ответы
Ответ 1
Просто проведите по массиву. Любой массив в JavaScript имеет индексы, даже ассоциативные массивы:
var AssocArray = { id:0, status:false, text:'apple' };
var s = "";
for (var i in AssocArray) {
s += AssocArray[i] + ", ";
}
document.write(s.substring(0, s.length-2));
Выведет: 0, false, apple
Ответ 2
Object.keys(AssocArray).map(function(x){return AssocArray[x];}).join(',');
PS: есть метод Object.values
где-то, но это не стандарт. Существуют также внешние библиотеки, такие как hashish
.
Ответ 3
Реализация функций типа Object.map
, Object.forEach
и т.д. все еще обсуждается. На данный момент вы можете использовать что-то вроде этого:
function objectJoin(obj, sep) {
var arr = [], p, i = 0;
for (p in obj)
arr[i++] = obj[p];
return arr.join(sep);
}
Изменить: использование временного массива и объединение его вместо конкатенации строк для повышения производительности.
Изменить 2: кажется, что arr.push(obj[p]);
вместо увеличения счетчика может быть быстрее в большинстве последних браузеров. См. Комментарии.