Доступ к объекту внутри массива - PullRequest
0 голосов
/ 03 января 2019

У меня есть объект, и я хочу получить доступ к значению типов в качестве свойства другого объекта, такого как a.Fax, a.Email, a.Call и т. Д. Но ниже я написал функцию, и она отправляет значения вa.ttt.Поэтому вместо ttt я хочу получить доступ к каждому значению внутри типов, например, Fax, Email, Call, Text, который хранится в ttt.

export const ActionTypes2 = [
    { value: "OtherLawyer", label: "Other Lawyer", types: ["Fax", "Email", "Call", "Text"] },
    { value: "OtherClerk", label: "Other Clerk", types: ["Fax", "Email", "Call", "Text"]  },
    { value: "BrokerageAgent", label: "Brokerage Agent", types: ["Fax", "Email", "Call", "Text"]  },
    { value: "Lawyer", label: "Lawyer", types: ["Email", "Call", "Text"]  },
    { value: "Clerk", label: "Clerk", types: ["Email", "Call", "Text"] },
    { value: "Client", label: "Client", types: ["Email", "Call", "Text"] },
    { value: "ListingAgent", label: "Listing Agent", types: ["Email", "Call", "Text"] },
    { value: "CooperatingAgent", label: "Cooperating Agent", types: ["Email", "Call", "Text"] }
]


getActionTypes() {
    let t = ActionTypes2;
    let f = <any>{};
    t.map((tt: any) => {
      tt.types.map((ttt: any) => {
        if (!f.ttt) {
          f.ttt = [];
        }
        f.ttt.push(t);
        // console.log(ttt);
      })
    })
    console.log(f);
  }

Ответы [ 3 ]

0 голосов
/ 03 января 2019

вы должны заменить f.ttt на f [ttt] следующим образом

getActionTypes() {
    let t = ActionTypes2;
    let f = <any>{};
    t.map((tt: any) => {
        tt.types.map((ttt: any) => {
            if (!f[ttt]) {
                f[ttt] = [];
            }
            f[ttt].push(t);
            // console.log(ttt);
        })
    })
    console.log(f);
}
0 голосов
/ 03 января 2019

Вы можете уменьшить массив до объекта (обратите внимание, что SO печатает консоль немного странно, нажмите F12 и проверьте консоль для фактического результата):

const data = [{"value":"OtherLawyer","label":"Other Lawyer","types":["Fax","Email","Call","Text"]},{"value":"OtherClerk","label":"Other Clerk","types":["Fax","Email","Call","Text"]},{"value":"BrokerageAgent","label":"Brokerage Agent","types":["Fax","Email","Call","Text"]},{"value":"Lawyer","label":"Lawyer","types":["Email","Call","Text"]},{"value":"Clerk","label":"Clerk","types":["Email","Call","Text"]},{"value":"Client","label":"Client","types":["Email","Call","Text"]},{"value":"ListingAgent","label":"Listing Agent","types":["Email","Call","Text"]},{"value":"CooperatingAgent","label":"Cooperating Agent","types":["Email","Call","Text"]}];

const groupByType = (data) =>
  data.reduce(
    (result, { types, ...rest }) =>
      types.reduce((result, type) => {
        result[type] = result[type] || [];
        result[type].push(rest);
        return result;
      }, result),
    {},
  );
console.log(groupByType(data));

Array.prototype.map используется для преобразования массива 'T в массив' U или даже для создания нового массива того жетип, но удвоенный (например, [1,2,3].map(x=>x*2)).Функция, передаваемая в map, должна быть чистой функцией, поэтому она не должна использовать или изменять что-то определенное вне функции или изменять отображаемый массив.

0 голосов
/ 03 января 2019

Как насчет ниже,

getActionTypes() {
   let t = ActionTypes2;
   let f = <any>{};
   t.map((tt: any) => {
     if (!f.ttt) {
       f.ttt = [];
     }
     f.ttt.push(tt.types);
   })
   console.log(f.ttt);  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...