Javascript检查从其他数组派生的数据的数组

时间:2017-11-28 15:21:42

标签: javascript arrays

我有一小段代码,我想弄清楚。我有三个数组,一个用于users,另一个用于tools

最后一个数组包含具有属性的对象,这些属性是每个用户和组合的组合。工具。

示例:

var users = ['bob123', 'tim890'],
    tools = ['admin', 'videos'],
    tasks = [];

在上面的代码中,总共有四个任务。 bob123/adminbob123/videostim890/admintim890/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();

最好的方法是检查第三个数组的对象中存在的两个数组之间的数据组合吗?

2 个答案:

答案 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();