Javascript String расщепление и организация на основе первой буквы - PullRequest
0 голосов
/ 19 мая 2018

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

{"timestamp":1526524809413,"data":[
{"_id":"rJeixnNtpG","data":"N11B00074","raw": 
[78,49,49,66,48,48,48,55,52],"timestamp":1525398515116}, 
{"_id":"HkzognEYpf","data":"N11E00000","raw": 
[78,49,49,69,48,48,48,48,48],"timestamp":1525398515479}, 
{"_id":"BJxXp4t6M","data":"N11A00029","raw": 
[78,49,49,65,48,48,48,50,57],"timestamp":1525398807747}

Как вы можете видеть, существует три типа данных: один начинается с B (N11B00074), E (N11E00000) и A (N11A00029), за которыми следуют 5 цифр, которые представляют собой данные, которые я хотел бы отделить от строки, в то время как они классифицированы по типу (B, E и A).

У меня есть три таблицы на моей веб-странице, и я хочу разместитьданные в них основаны на типах: например, B - таблица влажности, A - таблица температуры и E - таблица показаний pH.

enter image description here

Пока мне удалось перечислить их только в таблице.

Есть ли способ, которым я могу отделить строкуи поместить их в массив на основе их типов?

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Если вы хотите сгруппировать массив в объект.Вы можете использовать reduce.Вы можете получить четвертый символ строки, используя charAt

let arr = {"timestamp":1526524809413,"data":[{"_id":"rJeixnNtpG","data":"N11B00074","raw": [78,49,49,66,48,48,48,55,52],"timestamp":1525398515116}, {"_id":"HkzognEYpf","data":"N11E00000","raw": [78,49,49,69,48,48,48,48,48],"timestamp":1525398515479}, {"_id":"BJxXp4t6M","data":"N11A00029","raw":[78,49,49,65,48,48,48,50,57],"timestamp":1525398807747}]};

let result = arr.data.reduce((c, v) => {
  let l = v.data.charAt(3); //Get the 4th chatacter
  c[l] = c[l] || [];
  c[l].push(v);
  return c;
}, {});

console.log( result );
0 голосов
/ 19 мая 2018

Вы можете использовать reduce для группировки объектов в массиве:

const input={"timestamp":1526524809413,"data":[{"_id":"rJeixnNtpG","data":"N11B00074","raw":[78,49,49,66,48,48,48,55,52],"timestamp":1525398515116},{"_id":"HkzognEYpf","data":"N11E00000","raw":[78,49,49,69,48,48,48,48,48],"timestamp":1525398515479},{"_id":"BJxXp4t6M","data":"N11A00029","raw":[78,49,49,65,48,48,48,50,57],"timestamp":1525398807747}]}
const arranged = input.data.reduce((accum, obj) => {
  const { data } = obj;
  const type = data[3];
  const digits = data.slice(5);
  if (!accum[type]) accum[type] = [];
  accum[type].push({ ...obj, digits });
  return accum;
}, {});
console.log(arranged);

// If you want an array and not an object:
console.log(Object.values(arranged));
...