Как полностью вернуть массив с вложенным массивом объектов, если я использую распространенный синтаксис? - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь отобразить свой массив и добавить дополнительные поля, если выполняются условия .. Это работает! мой код добавить дополнительные поля мне нужно. Но проблема в том, что мой массив не возвращался полностью, вложенный массив объектов внутри возвращает null []. Я узнал, что синтаксис распространения вызывает проблему? Что мне делать?

Это мой образец массива:

data = [{
    "a": 1,
    "b": 5,
    "c": [{
      "a": 1,
      "b": 5
    }, {
      "a": 1,
      "b": 5
    }]
  },
  {
    "a": 2,
    "b": 6,
    "c": [{
      "a": 1,
      "b": 5
    }, {
      "a": 1,
      "b": 5
    }]
  },
  {
    "a": 3,
    "b": 7,
    "c": [{
      "a": 1,
      "b": 5
    }, {
      "a": 1,
      "b": 5
    }]
  }
]

Это мой код, который добавляет дополнительное поле при выполнении условий:

[{
    "a": 1,
    "b": 5,
    "c": [],
    "d": 3,
    "e": 1,
  },
  {
    "a": 2,
    "b": 6,
    "c": [],
    "d": 2,
    "e": 2
  },
  {
    "a": 3,
    "b": 7,
    "c": [],
    "d": 3,
    "e": 7
  }
]

data = [{
    "a": 1,
    "b": 5,
    "c": [{
      "a": 1,
      "b": 5
    }, {
      "a": 1,
      "b": 5
    }]
  },
  {
    "a": 2,
    "b": 6,
    "c": [{
      "a": 1,
      "b": 5
    }, {
      "a": 1,
      "b": 5
    }]
  },
  {
    "a": 3,
    "b": 7,
    "c": [{
      "a": 1,
      "b": 5
    }, {
      "a": 1,
      "b": 5
    }]
  }
]
const output = data.map(function(x) {
  if (this.has(x.a)) {
    return {
      ...x,
      "d": "",
      "e": this.size
    };
  }

  this.add(x.a);
  return {
    ...x,
    "d": this.size,
    "e": ""
  };
}, new Set());
console.log(output);

Мне нужно, чтобы свойство letter c не возвращало null [], а возвращало те же данные, прежде чем я отобразил их.

1 Ответ

0 голосов
/ 26 июня 2019

Я думаю, что это может быть проблема совместимости браузера.

Синтаксис распространения пока не поддерживается везде .

Возможно, вы захотите взглянуть на альтернативы, такие как Object.asign .Внимание: это не поддерживается везде .

Или, может быть, даже так:

const data = [
  {
    "a": 1,
    "b": 5,
    "c": [{"a": 1, "b": 5}, {"a": 1, "b": 5}]
  },
  {
    "a": 2,
    "b": 6,
    "c": [{"a": 1, "b": 5}, {"a": 1, "b": 5}]
  },
  {
    "a": 3,
    "b": 7,
    "c": [{"a": 1, "b": 5}, {"a": 1, "b": 5}]
  }
];

data.forEach(function(x) {
  if (this.has(x.a)) {
    x.d = '';
    x.e = this.size;
  } else {
    this.add(x.a)
    x.d = this.size;
    x.e = '';
  }
}, new Set());
console.log(data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...