我有以下网址:
https://www.youtube.com/watch?v=-5Dsh9xXuo8&paused=true&volume=100
我想将其转换为:
var parsedUrl = {
v: "-5Dsh9xXuo8",
paused: true,
volume: 100
};
所以,我使用了一个非常简单的解决方案:
_urlToVideoOptions: function(url) {
var queryParameters = url.search.substr(1);
var videoOptions = {};
queryParameters.split('&').forEach(function(part) {
var item = part.split('=');
videoOptions[item[0]] = decodeURIComponent(item[1]);
});
return videoOptions;
}
这导致:
var parsedUrl = {
v: "-5Dsh9xXuo8",
paused: "true",
volume: "100"
};
其中paused和volume是字符串而不是boolean / number。
是否有将这些值转换为适当类型的通用方法?或者我需要调用parseInt,使用自定义' parseBool'方法等......并且,如果失败,则回退到字符串?
答案 0 :(得分:1)
没有别的办法。
_urlToVideoOptions: function(url) {
var queryParameters = url.search.substr(1);
var videoOptions = {};
queryParameters.split('&').forEach(function(part) {
var item = part.split('=');
var val = decodeURIComponent(item[1]);
if (val == "true" || val == "false")
val = !!val;
else if (!isNaN(val)) {
if (val.indexOf('.') != -1)
val = parseFloat(val);
else
val = parseInt(val);
}
videoOptions[item[0]] = val;
});
return videoOptions;
}