Скобки внутри аргумента функции совместимости ES5 - PullRequest
0 голосов
/ 18 марта 2019

Я запускаю скрипт ниже в IE11 без транспортеров.Однако он возвращает ошибку «ожидаемый идентификатор».

var result = Object.values(response.data.reduce(function(r, { boxm, model_no, model_name, qty, type }, index, array) {
      r[boxm] = r[boxm] || { boxm: boxm, lines: [] }
      r[boxm].lines.push({ model_no: model_no.toString(), model_name: model_name, qty: qty, type: type })
      return r
}, {}))

Я предполагаю, что это должна быть эта часть { boxm, model_no, model_name, qty, type } в функции сокращения.

Кто-то знает, как мне преобразовать это в дружественный синтаксис ES5.

Ответы [ 2 ]

1 голос
/ 18 марта 2019

Не поддерживаемая часть - это, конечно, деконструкция, но также Object.values.

Чтобы быть уверенным в том, что вы можете использовать или нет, есть веб-сайт:

https://caniuse.com/#search=Object.values


enter image description here


var obj = response.data.reduce(function(r, data, index, array) {
  r[data.boxm] = r[data.boxm] || {
    boxm: data.boxm,
    lines: [],
  };

  r[data.boxm].lines.push({
    model_no: data.model_no.toString(),
    model_name: data.model_name,
    qty: data.qty,
    type: data.type,
  });

  return r;
}, {});

var result = Object.keys(obj).map(function(x) {
  return obj[x];
});
0 голосов
/ 18 марта 2019

Это называется деструктуризацией, и это синтаксис ECMAScript 6. Object.values и имя динамического свойства также не поддерживаются. Вот полная версия ES5:

//Note that I'm creating Object.values here to make the rest of the code simpler
Object.prototype.values = function(obj) {
    return Object.keys(obj).map(function(key) {
        return obj[key];
    });
};

var result = Object.values(response.data.reduce(function(r, curr, index, array) {
    if (!r[curr.boxm]) {
        r[curr.boxm] = {
            boxm: curr.boxm,
            lines: []
        }
    }
    r[curr.boxm].lines.push({
        model_no: curr.model_no.toString(),
        model_name: curr.model_name,
        qty: curr.qty,
        type: curr.type
    });
    return r;
}, {}));
...