Ich habe hier eine Frage, ich möchte alle value des values Arrays in diesem Array erhalten.

const sample = [
  {
    "key": "sampleKey", "values":
      [
        { "key": "insidesampleKey", "value": 2 },
        { "key": "insideofinside", "value": 2 }
      ]
  },

  { 
    "key": "sampleKey2", "values": 
      [
        { "key": "insideSampleKey2", "value": 1 }
      ] 
  },

  { 
    "key": "samplkey3", "values": 
      [
        { "key": "insideofsampleKey3", "value": 1 }
      ] 
  }
]

Bisher kann ich nur den ersten console.log(sample[0].values[0].value) drucken. Ich schätze mit jeder Hilfe. Vielen Dank und ein schönes Wochenende

1
Khang Nguyen 18 Jän. 2019 im 06:52

4 Antworten

Beste Antwort

Ich denke, flatMap könnte die sein bester Weg, um damit umzugehen.

Sample.flatMap (äußere => äußere.Werte.map (innere => innere.Wert))

1
user10931450user10931450 18 Jän. 2019 im 04:11

Sie können reduce und concat verwenden, um ein flaches, einzelnes Array zu erhalten.

const sample = [{"key":"sampleKey","values":
  [{"key":"insidesampleKey","value":2},{"key":"insideofinside","value":2}]},

{"key":"sampleKey2","values":[{"key":"insideSampleKey2","value":1}]},

{"key":"samplkey3","values":[{"key":"insideofsampleKey3","value":1}]}]

var values = sample.reduce((acc, item) => acc.concat(item.values.map(v=> v.value)),[]);
console.log(values);
1
JohanP 18 Jän. 2019 im 03:58

Wenn Sie die anderen value Eigenschaften drucken möchten, einfach map über das Array, dann schauen Sie sich das values Array an, schauen Sie sich dann value an und verwenden Sie schließlich {{X4 }} um ein einzelnes Array zu erhalten:

const sample = [{
    "key": "sampleKey",
    "values": [{
      "key": "insidesampleKey",
      "value": 2
    }, {
      "key": "insideofinside",
      "value": 2
    }]
  },

  {
    "key": "sampleKey2",
    "values": [{
      "key": "insideSampleKey2",
      "value": 1
    }]
  },

  {
    "key": "samplkey3",
    "values": [{
      "key": "insideofsampleKey3",
      "value": 1
    }]
  }
];

console.log(sample.map(e => e.values.map(x => x.value)).flat(1));
0
Jack Bashford 18 Jän. 2019 im 04:00

Die einfachste Methode ist die Verwendung einer flatMap über dem Array wie unten. Sie können Polyfill für Browser verwenden, die dies noch nicht unterstützen. Verwenden Sie MDN, um mehr zu erfahren.

sample.flatMap(item => item.values.map(inner => inner.value))
0
Dhananjai Pai 18 Jän. 2019 im 03:57