Не удается прочитать свойство ‘0’ неопределенного в функции (p5.js )

#javascript #processing #p5.js

#javascript #обработка #p5.js

Вопрос:

В первой строке моего кода я помещаю var array = [] , но получаю ошибку, указывающую на эту функцию. Если я регистрирую массив перед вызовом функции, это именно то, что должно быть, но если я делаю это где-либо внутри функции, она не регистрируется до ошибки

 let elements = 25
var array = []
let goal = []
let tempAr = []
let i = 1
 
function setup() {
 
    // put setup code here
    createCanvas(600, 600)
    background(25)
    // make the goal array ascending
    while (goal.length < elements) {
        goal.push(i)
        i  
    }
 
    // make the scrambled array
 
    i = 0
    tempAr = goal
    while (i < elements) {
        let rng = Math.floor(random(tempAr.length))
        array.push(tempAr[rng])
        tempAr.splice(rng, 1)
 
        i  
 
    }
 
}
 
function draw() {
    fill('#f1f442')
 
    drawRect()
    sort()
 
}
 
 
function drawRect() {
    i = 1
    while (i <= elements) {
        rect(i * (width / elements) - (width / elements), height - array[i - 1] * height / elements, width / elements, array[i - 1] * height / elements)
        i  
    }
}
 
function sort() {
 
    let sorted = false
 
    while (!sorted) {
 
        sorted = true
        var e = 0
        while (e < array.length) {
 
            if (array[e] > array[e   1]) {
                let temp = array[e   1]
                array[e   1] = array[e]
                array[e] = temp
                sorted = false
 
            }
            drawRect()
            e  
        }
 
    }
 
 
}  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.3/p5.js"></script>  

Ответ №1:

sort() это имя встроенной функции в p5.js .
Вы должны выбрать другое имя для своей функции. Поэтому переименуйте sort во что-нибудь другое (например mysort ), чтобы ваш код выполнялся.

 let elements = 25
var array = []
let goal = []
let tempAr = []
let i = 1
 
function setup() {
 
    // put setup code here
    createCanvas(600, 600)
    background(25)
    // make the goal array ascending
    while (goal.length < elements) {
        goal.push(i)
        i  
    }
 
    // make the scrambled array
 
    i = 0
    tempAr = goal
    while (i < elements) {
        let rng = Math.floor(random(tempAr.length))
        array.push(tempAr[rng])
        tempAr.splice(rng, 1)
 
        i  
 
    }
 
}
 
function draw() {
    fill('#f1f442')
 
    drawRect()
    mysort()
 
}
 
 
function drawRect() {
    i = 1
    while (i <= elements) {
        rect(i * (width / elements) - (width / elements), height - array[i - 1] * height / elements, width / elements, array[i - 1] * height / elements)
        i  
    }
}
 
function mysort() {
 
    let sorted = false
 
    while (!sorted) {
 
        sorted = true
        var e = 0
        while (e < array.length) {
 
            if (array[e] > array[e   1]) {
                let temp = array[e   1]
                array[e   1] = array[e]
                array[e] = temp
                sorted = false
 
            }
            drawRect()
            e  
        }
    }
}  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.3/p5.js"></script>