Функция внутри массива необработанных объектов и возвращает в виде строки JS

#javascript #arrays #object

#javascript #массивы #объект

Вопрос:

У меня есть массив объектов, на данный момент внутри есть только один объект. В этом объекте у меня есть функция, которая определяет некоторые свойства одного и того же объекта. Я печатаю с помощью цикла компоненты, но функция не обрабатывается, и возвращается строка. Как я могу получить результат?

 let arrMaterie = [
    {
        name: "...",
        a: 4,
        b: 75,
        functionTest: function test() {
            return this.a this.b;
        }
    }
];

for (let i in arrMaterie) {
    for (let j in arrMaterie[i]) {
        test.innerHTML  = arrMaterie[i][j];
    }
}
 

ВЫВОД …475функция test() { return this.a — this.b }
и не …-4-75-79

Комментарии:

1. пожалуйста, покажите, как вы вызываете функцию

2. Я не вижу, чтобы функция вызывалась где угодно.

Ответ №1:

Вам нужно будет определить, является ли свойство функцией, и если это так, вызовите его с () помощью — so что-то вроде:

 let arrMaterie = [
    {
        name: "...",
        a: 4,
        b: 75,
        functionTest: function test() {
            return this.a this.b;
        }
    }
];

const test = document.getElementById("test");
for (let i in arrMaterie) {
    for (let j in arrMaterie[i]) {
        if(typeof arrMaterie[i][j] == "function"){
          test.innerHTML  = arrMaterie[i][j]();
        }
        else{
          test.innerHTML  = arrMaterie[i][j];
        }
    }
} 
 <div id="test"></div>