Возьмите массив строк как средство доступа к свойству

Если ваше действие возвращает List контрактов, вы можете сделать следующее в представлении:

@model IEnumerable<ContractPlain>

@foreach(ContractPlain contract in Model) 
{
    <ul>
        <li>@contract.ContractGuid</li>
        <li>@contract.SenderId</li>
        <li>@contract.ContractStatus</li>
        <li>@contract.CreditEnd</li>
    </ul>
}
0
задан androbin 6 March 2019 в 15:02
поделиться

1 ответ

Быстрый способ сделать это - перебирать свойства и последовательно обращаться к внутренним объектам, вы можете сделать это, используя Array.reduce() или цикл for:

const get = (obj, props) => props.reduce((out, p) => out && out[p] || undefined, obj);

const obj = { a: { b: { c: 5 } } };

console.log(get(obj, ['a', 'b', 'c']));
console.log(get(obj, ['a', 'b', 'c', 'd', 'e']));

Или, вы можете оценить выражение, используя eval(), однако, это, вероятно, самый медленный способ сделать это, Я не рекомендую его :

const get = (obj, props) => {
  try {
    return eval(`obj.${props.join('.')}`);
  } catch {
    return undefined;
  }
}

const obj = { a: { b: { c: 5 } } };

console.log(get(obj, ['a', 'b', 'c']));
console.log(get(obj, ['a', 'b', 'c', 'd', 'e']));

0
ответ дан jo_va 6 March 2019 в 15:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: