Nano Hash - криптовалюты, майнинг, программирование

Реструктуризация массива машинописного текста

Я хочу реструктурировать свой массив, который я получил из php, чтобы его можно было использовать с моим ngFor.

В настоящее время мой массив содержит ~ 2700 элементов, которые содержат объект со следующими данными:

name: "Someone"
shift: 3
week: 1
department_name: "somedepartment"

Я хочу изменить его на массив-> неделя-> сдвиг-> department.name

В JS это было бы легко, но в Typescript я не могу заставить его работать, мой фактический код выглядит так:

test(data): void{
//data contains the actual array
let user = [];
for (let entry of data){
  console.log(entry['week']);
  console.log(entry['shift']);
  console.log(entry['department_name']);
  user[entry['week']][entry['shift']][entry['department_name']] = entry;
}
console.log(user);}

console.log возвращает первые 3 значения: 1, 3, "departmentx"

А затем возвращает:

ОШИБКА Ошибка: Uncaught (в обещании): TypeError: невозможно прочитать свойство «3» неопределенного TypeError: невозможно прочитать свойство «3» неопределенного

Я читал, что я должен установить размер массива раньше, но он будет каждый раз другим, и позже будет гораздо больше информации, кроме имени, которое будет сохранено.


  • AngularJS или Angular? Не может быть обоих. 28.04.2017
  • Ошибка ERROR: Uncaught (in promise): TypeError: Невозможно прочитать свойство '3' неопределенного TypeError: Невозможно прочитать свойство '3' неопределенного — это ошибка времени выполнения, а не ошибка TypeScript. 28.04.2017
  • Тай Угловой прав. Для меня это ошибка машинописи, потому что тот же код работает в js. 28.04.2017

Ответы:


1

Если я правильно понял, вы хотите изменить порядок элементов в вашем массиве, верно?

Это должно работать:

    let newArray = [];
    for (let entry in data) {
        let currentObj = {
            [entry.week]: {
              [entry.shift]: entry.department_name
            }
        };
        newArray.push(currentObj);
    }
    console.log(JSON.stringify(newArray));

вывод этого будет примерно таким:

   newArray = [
        1: {
            3: "somedepartmentX"
        },
        2: {
            4: "somedepartmentY",
        },
        3: {
            5: "somedepartmentZ",
        },
    ];
28.04.2017
  • Ty это приближается к тому, что я хочу, и это работает. Проблема в том, что мне просто нужно, чтобы он был многомерным. Это означает, что свойства должны быть установлены примерно так: let currentObj = {entry.week: {entry.shift: {entry.department: entry.name}}} //entry.shift, неделя и отдел просто содержат ключ для новый массив 28.04.2017
  • @Doomenik Обновлено, я надеюсь, что это ближе к тому, что вам нужно, или, по крайней мере, это хорошее начало, чтобы вы могли достичь того, чего хотите. надеюсь помогло! ;) 28.04.2017
  • Это именно то, что я хочу, но это не работает. В объявлении currentObj говорится при входе. ожидал ':' . Терминал выдает более миллиона кодов ошибок: D Первая ошибка терминала: Неожиданный токен.. запись: .week Похоже, Typesript неправильно переводит 28.04.2017
  • Идеальный! Я бы никогда не подумал об этом... просто нужно было добавить '[ ]' ty. Теперь мне просто нужно уйти от push, чтобы он объединил элемент на уровне entry.week и entry.shift. На данный момент у меня еще 2700 элементов. Но эту проблему я решу сам. Можете ли вы изменить entry.shift на [entry.shift], тогда я смогу отметить ваш ответ как правильный. 28.04.2017
  • @Doomenik изменился! Великолепно! Я очень рад, что это помогло вам. Теперь продолжим кодить! ;) Удачи! :) 28.04.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..