基于第一个字母的Javascript字符串分割和组织

时间:2021-02-19 18:08:44

I am currently working a project that I have to use js and php to retrieve data from the gateway. Now that i have retrieved it, but the data is not organised:

我现在正在做一个项目,我必须使用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}

As you can see there are three types of data: the one starts with B(N11B00074), E(N11E00000) and A(N11A00029), followed by the 5 digits which is the data i wanted to split from the string while categorised by the type(B, E and A).

如您所见,有三种类型的数据:一种是从B(N11B00074)、E(N11E00000)和A(N11A00029)开始,然后是5位数字,这是我想要从字符串中分割出来的数据,然后是类型(B、E和A)。

I have three tables in my web page and want to put the data into them based on the types: Like B being humidity table, A being temperature table and E being pH readings table.

我的网页上有三个表,我想把这些数据放到它们的基础上:像B是湿度表,A是温度表,E是pH值表。

基于第一个字母的Javascript字符串分割和组织

So far i only managed to list them out in a table.

到目前为止,我只把它们列在表中。

Is there a way that I can seperate the string and put them into an array based on their types?

是否有一种方法可以分离字符串并根据它们的类型将它们放入数组中?

2 个解决方案

#1


1  

You can use reduce to group objects in an array:

可以使用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));

#2


0  

If you want to group the array into an object. You can use reduce. You can get the fourth character of the string by using charAt

如果要将数组分组到对象中。您可以使用减少。可以使用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 );

#1


1  

You can use reduce to group objects in an array:

可以使用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));

#2


0  

If you want to group the array into an object. You can use reduce. You can get the fourth character of the string by using charAt

如果要将数组分组到对象中。您可以使用减少。可以使用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 );