javascript - 删除不必要的重复
问题描述
我正在尝试从默认设置中删除这些 playerVars,因为这是不必要的重复。
start: 0,
end: 999999,
loop: true,
https://jsfiddle.net/hzyrfkwb/461/
function addVideo(video, settings) {
const defaultSettings = {
width: settings.width || 640,
height: settings.height || 390,
videoId: video.dataset.id,
playerVars: {
start: 0,
end: 999999,
loop: true,
有没有办法让我只在需要时才添加它们?
正如本例中所做的那样:
https://jsfiddle.net/hzyrfkwb/432/
这样做会消除很多不必要的重复。
loadPlayer({
target: ".jacketc",
width: 600,
height: 338,
playerVars: {
start: 200,
end: 205,
loop: true
}
});
它不需要在顶部都说明:
function addVideo(video, settings) {
const defaultSettings = {
width: settings.width || 640,
height: settings.height || 390,
videoId: video.dataset.id,
playerVars: {
start: 0,
end: 999999,
loop: true
而且在底部:
loadPlayer({
target: ".jacketc",
width: 600,
height: 338,
playerVars: {
start: 200,
end: 205,
loop: true
}
});
只有在需要时才应将它们添加到 loadPlayer。在默认设置中,不应要求它们位于顶部。
start: 0,
end: 999999,
loop: true,
这些应该只是默认设置:
autoplay: 1,
controls: 1,
showinfo: 1,
rel: 0,
iv_load_policy: 3,
cc_load_policy: 0,
fs: 0,
disablekb: 1
};
只有在需要时才会将它们添加到 loadPlayer 中。如果不需要它们,它们就不需要出现在 javascript 中。
start: 0,
end: 999999,
loop: true,
我如何才能对代码进行这种调整?
https://jsfiddle.net/hzyrfkwb/453/
默认设置中不需要这些 playerVars。只有在需要时才会将它们添加到 loadPlayer。
start: 200,
end: 205,
loop: true,
这正是它在其他代码中的工作方式。
https://jsfiddle.net/hzyrfkwb/465/
我如何能够在新的更新代码中实现它?
解决方案
我不太了解您的问题,但据我了解,您想playerVars
在函数中进行可选设置,addVideo()
但不想定义playerVars
为输入变量?也许你可以试试这个
["start", "end", "loop"].forEach(function (a) {
if (settings[a]) {
defaultSettings.playerVars[a] = settings[a];
}
});
// or
for (let a of ["start", "end", "loop"]) {
if (settings[a]) defaultSettings.playerVars[a] = settings[a];
}
// or
let optional = ["start", "end", "loop"];
for (let i = 0; i < optional.length; i++) {
if (settings[optional[i]]) {
defaultSettings.playerVars[optional[i]] = settings[optional[i]];
}
}
完整代码
function addVideo(video, settings) {
const defaultSettings = {
width: settings.width || 640,
height: settings.height || 390,
videoId: video.dataset.id,
playerVars: {
autoplay: 1,
controls: 1,
showinfo: 1,
rel: 0,
iv_load_policy: 3,
cc_load_policy: 0,
fs: 0,
disablekb: 1
},
events: {
"onReady": onPlayerReady,
"onStateChange": onPlayerStateChange
}
};
["start", "end", "loop"].forEach(function(a) {
if (settings[a]) defaultSettings.playerVars[a] = settings[a];
});
const updatedSettings = combineSettings(defaultSettings, settings);
console.log(updatedSettings)
players.push(new YT.Player(video, updatedSettings));
}
推荐阅读
- c# - ValidateAntiForgeryToken 端点属性在 Asp.Net 核心 Angular Web 应用程序中每次 CSRF 攻击的使用情况
- amazon-web-services - 如何使用 CLI 更新 AWS 环境变量?
- javascript - 如何通过单击将按钮中的值存储到变量中?
- django - 如何使 Django 加载配置文件图像文件形成“媒体”目录
- sql-server - 我们是否可以选择在数据库范围内启用 OPTION(RECOMPILE)
- php - 使用 whereIn 从数据透视表返回数据
- python - 无法将关键字“approve_moderator”解析为字段。选项有:id、user、user_id
- google-cloud-platform - 是否可以在本地运行 GKE Workload ID?
- embedded-linux - PTHREAD_STACK_MIN 导致编译 buildroot 出现问题
- jenkins - 如何从 Jenkinsfile 设置环境变量