Есть ли способ (в vanilla javascript) предотвратить дублирование сгенерированных rng объектов в одном массиве, которые соответствуют нескольким ключам? - PullRequest
1 голос
/ 09 апреля 2020

Я довольно новичок в JS, поэтому, пожалуйста, потерпите меня, пытаясь объяснить это:

Я начинаю с пустого array = []

Я использую for l oop в сочетании с конструктором объектов для генерации заданного количества объектов - каждый из которых имеет одинаковый набор ключей - и использованием нескольких функций rng для назначения случайных значений каждому ключу в каждом сгенерированном объекте. Эти объекты получают push ed по одному в конце каждого l oop в пустой массив ранее.

Каждый сгенерированный объект имеет всего 6 ключей.

Я хочу знать, возможно ли предотвратить генерацию нового объекта, если он будет соответствовать указанному подмножеству ключей c. Т.е., если у меня есть

object = {key1: 17,
          key2: 'potato',
          key3: false,
          key4: true,
          key5: 27,
          key6: 'purple flamingos'
}

, я хочу убедиться, что функция не генерирует больше элементов с точно такой комбинацией значений:

key1: 17,
key2: 'potato',
key4: true,

Хотя любые два из них могут соответствует, я хочу предотвратить повторение этих трех пар ключ / значение в результирующем массиве.


Вот еще мой код, если это поможет

"use strict";

const quizSubmissions = []; // Empty array for randomly generated student list

function Submission(quizName, quizModule, quizScore, studentId, studentName, submissionDate) { // Constructor for individual submissions
    this.quizName = quizName,
        this.quizModule = quizModule,
        this.quizScore = quizScore,
        this.studentId = studentId,
        this.studentName = studentName,
        this.submissionDate = submissionDate
}

const randQuiz = (a, b) => { // Output quiz name and module based on input
}

const randQuizScore = () => { // Generate random quiz grade from 50 to 100
}

const randStudent = (c) => { // Output student name and id based on input
}

const randSubmissionDate = () => { // Generate random dare of submission
}

const generateStudentList = (quantity) => { // Function to generate submission objects with rng
    console.log('Values automatically stored to array named "quizSubmissions"')

    for (let i = 0; i < quantity; i++) { // Iterate through the loop 'quantity' times
        let a = Math.floor(Math.random() * 6);
        let b = Math.floor(Math.random() * 4);
        let c = Math.floor(Math.random() * 4);

        quizSubmissions.push(
            new Submission(
                randQuiz(a, b)[0],
                randQuiz(a, b)[1],
                randQuizScore(),
                randStudent(c)[1],
                randStudent(c)[0],
                randSubmissionDate())) // Push new object to global array, based on rng results
    }

    return quizSubmissions;
}

const clearStudentList = () => {
    quizSubmissions.length = 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...