В настоящее время я работаю над проектом, в котором мне нужно использовать 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.
Пока мне только удалось перечислить их в таблице.
Есть ли способ, которым я могу отделить строку и поместить их в массив на основе их типов?
Ты можешь использовать 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));
Если вы хотите сгруппировать массив в объект. Ты можешь использовать 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 );