Я работаю над динамической структурой, в качестве основного примера:Правильный способ проверить, имеет ли динамический объект пустое поле?
var myObj = {
"fruits" : {
"apples" : {
"color" : "red",
"price" : "$0.49"
}
},
"colors" : {}
};
Так я ожидаю, что, например фрукты, «оранжевые» не существует. Я хочу проверить, что он не существует, поэтому я могу добавить его.
Я вижу в консоли, что вам говорят «undefined», если вы пытаетесь получить доступ к «объекту», которого не существует.
Это то, что я ищу, но я не хочу ошибки в консоли, я хочу знать/ожидать, что он пуст, поэтому я могу добавить к нему.
Если я что-то вроде
console.log(myObj.fruits.apples.color);
Я бы получить красный цвет, так что, если я сделал что оранжевый
console.log(myObj.fruits.orange.color);
было бы сказать, не определено, по крайней мере, если бы я попытался
console.log(myObj.fruits.apples.weight);
Это не должно быть неопределенным, мой jsfiddle не делает так жарко, я не могу воспроизвести это неопределенное сообщение console.log в данный момент
Хорошо, поэтому кажется, что при условии существования объекта вы можете проверить неопределенное свойство, например, пример веса.
Я не ищу этого, я ищу, чтобы проверить, существует ли такой объект, как «кокосовый орех», поэтому я могу добавить его в массив объектов, используя расширение. Но я не хочу красную ошибки журнала консоли, я хочу, чтобы быть в состоянии предвидеть его, используя сравнение, как:
if (myObj.fruits.coconut === "undefined") {
// means it doesn't exist, add it
}
я понимаю, с моим собственным тестом, который будет производить ошибку, не неопределенные подобно вес яблока журнала консоли демка выше
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof – deceze
if (myObj.fruits.coconut === void 0) ..... или .. .... if (typeof myObj.fruits.coconut === "undefined") – Kenny
вы должны проверить свойство * first *, которое может не существовать, и если оно должно быть объектом (это ваш случай), то вы можете сделайте это с помощью '!' operator 'if (! myObj.fruits.coconut) myObj.fruits.coconut = {color: 'brown'};' – trincot