Может кто-нибудь объяснить мне это Object.keys (this_obj) .forEach ((ключ) - PullRequest
0 голосов
/ 16 апреля 2019

Может кто-нибудь объяснить мне об этом фрагменте кода и есть ли простой способ написать его.

Object.keys(this_obj).forEach((key) => {
        if (key === 'string') {
            result.push(this_obj[key]);

            return result;
        }
});

1 Ответ

2 голосов
/ 16 апреля 2019

Итерировать не нужно, потому что цикл, в лучшем случае, только подтолкнет к result (что, вероятно, уже определено), если ключ с именем string находится на объекте, и будет выдвигать значение только включ string.Итак, вот более простой способ написать это:

if (this_obj.hasOwnProperty('string')) {
  result.push(this_obj.string);
}

Если string не может быть перечисляемым, то это не будет точно так же, как цикл Object.keys,поскольку Object.keys выполняет итерации только перечислимых свойств, поэтому при необходимости вы можете использовать перечислимую проверку:

if (this_obj.propertyIsEnumerable('string')) {
  result.push(this_obj.string);
}

(propertyIsEnumerable возвращает false, если свойство не находится непосредственно на объекте)

Полагаю, в очень нечетном случае, что this_obj также имеет custom hasOwnProperty или propertyIsEnumerable ключ, вы должны вместо этого call:

if (Object.prototype.propertyIsEnumerable.call(this_obj, 'string')) {
  result.push(this_obj.string);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...