J'exécute le script ci-dessous dans IE11 sans transpileurs. Cependant, il renvoie une erreur "identifiant attendu".

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
}, {}))

Je suppose que cela doit être cette partie { boxm, model_no, model_name, qty, type } dans la fonction de réduction.

Est-ce que quelqu'un sait comment convertir cela en syntaxe conviviale ES5.

-2
Kay Singian 18 mars 2019 à 11:33

2 réponses

Meilleure réponse

La partie non supportée est bien sur la déconstruction, mais aussi le Object.values.

Pour être sûr de ce que vous pouvez utiliser ou non, il existe un site web :

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];
});
1
adiga 18 mars 2019 à 08:45

C'est ce qu'on appelle la déstructuration, et c'est la syntaxe ECMAScript 6. Object.values et le nom de propriété dynamique ne sont pas non plus pris en charge. Voici une version ES5 complète :

//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;
}, {}));
0
Jack Bashford 18 mars 2019 à 08:49