【发布时间】:2017-04-04 22:06:02
【问题描述】:
我想知道在 JavaScript 中将此字符串转换为对象的最有效方法。
这是丑陋的字符串:
"\"date\",\"initRegistrations\",\"registrations\",\"finalizeRegistrations\"\r\n\"03/29/2017\",\"0\",\"0\",\"0\"\r\n\"03/30/2017\",\"5\",\"4\",\"4\"\r\n\"03/31/2017\",\"42\",\"0\",\"0\"\r\n\"04/01/2017\",\"192\",\"0\",\"0\"\r\n\"04/02/2017\",\"4\",\"0\",\"0\"\r\n\"04/03/2017\",\"23\",\"0\",\"0\"\r\n\"04/04/2017\",\"5\",\"0\",\"0\"\r\n"
目前我正在使用这个函数,但它不能正常工作,预期的输出将是一个带有键日期、initRegistrations、registrations、finalizeRegistrations 的对象对象:
function convertToArrayOfObjects(data) {
var keys = data.shift(),
i = 0, k = 0,
obj = null,
output = [];
for (i = 0; i < data.length; i++) {
obj = {};
for (k = 0; k < keys.length; k++) {
if(data[i][k]){
obj[keys[k]] = data[i][k];
}
}
output.push(obj);
}
return output;
}
有没有什么花哨的方法可以轻松实现这一点,或者我应该去玩我的对象数组? 任何帮助或建议表示赞赏。 谢谢。
【问题讨论】:
-
你的“丑陋字符串”是字符串的文字内容还是字符串文字?
-
该字符串的预期输出是什么?
-
“不能正常工作”,它应该如何工作?预期与实现的输出是什么?
-
这些数据是从哪里来的?看起来 CSV 或带有所有双引号和行尾的 CSV 都以 JSON 格式转义了。如果你知道它是如何编码的,那么解码它会容易得多。
-
您指定了输入,现在请指定所需的输出
标签: javascript arrays string object