我有一小段代码,我想弄清楚。我有三个数组,一个用于users
,另一个用于tools
。
最后一个数组包含具有属性的对象,这些属性是每个用户和组合的组合。工具。
示例:
var users = ['bob123', 'tim890'],
tools = ['admin', 'videos'],
tasks = [];
在上面的代码中,总共有四个任务。 bob123/admin
,bob123/videos
,tim890/admin
,tim890/videos
。
我试图弄清楚如何检查对象数组(tasks
)以查看是否存在用户/工具组合。如果没有,它将通过创建函数运行它。
伪代码:
var users = ['bob123', 'tim890'],
tools = ['admin', 'videos'],
tasks = [];
// Check to see if tasks have been created for each tool/user combo
function checkTasks() {
/*
Loop over all the tasks.
If a task doesnt exist for a specific
tool/user combo, create it.
*/
// Pseudo Code
Loop Begin
if bob123 admin does not exist in tasks {
createTask('bob123', 'admin');
}
Loop End
}
// Create a new task if one doesn't exist
function createTask(user, tool) {
// Create a new task
tasks.push({
TaskUser: user,
TaskTool: tool
});
}
// Run our app
checkTasks();
最好的方法是检查第三个数组的对象中存在的两个数组之间的数据组合吗?
答案 0 :(得分:-1)
您可以使用some
进行此类操作。
这是一个例子:
var exists = tasks.some(task => task.TaskUser == user && task.TaskTool == tool);
答案 1 :(得分:-1)
您可以为此创建一个嵌套循环。
var users = ['bob123', 'tim890'],
tools = ['admin', 'videos'],
tasks = [];
// Check to see if tasks have been created for each tool/user combo
function checkTasks() {
/*
Loop over all the tasks.
If a task doesnt exist for a specific
tool/user combo, create it.
*/
for (var i = 0; i < users.length; i++) {
for (var u = 0; u < tools.length; u++) {
if (!taskExists(users[i], tools[u]))
createTask(users[i], tools[u])
}
}
}
// Check if a task with the specified user&tool exists
function taskExists(user, tool) {
for (var i = 0; i < tasks.length; i++) {
if (tasks[i].TaskUser == user && tasks[i].TaskTool == tool)
return true
}
return false
}
// Create a new task if one doesn't exist
function createTask(user, tool) {
// Create a new task
tasks.push({
TaskUser: user,
TaskTool: tool
});
}
// Run our app
checkTasks();