在指标中创建数组JSON

时间:2017-12-30 12:33:53

标签: javascript arrays json node.js express

我正在使用ExpressJS在我的应用程序今日公路旅行中创建JSON,我将在指标 0 - 0 中创建新阵列JSON >列出停车位。

如何在指标 0 中创建新数组为 0

示例JSON:

{ "data": [
    { "speed": "0" },
    { "speed": "10" },
    { "speed": "2" },
    { "speed": "5" },
    { "speed": "4" },
    { "speed": "9" },
    { "speed": "0" },
    { "speed": "2" },
    { "speed": "4" },
    { "speed": "33" },
    { "speed": "0" },
]}; 

为:

{ "data": [{
    "1": [
        { "speed": "10" },
        { "speed": "2" },
        { "speed": "5" },
        { "speed": "4" },
        { "speed": "9" },
    ],
    "2": [
        { "speed": "2" },
        { "speed": "4" },
        { "speed": "33" },
    ]
}]};

由于

2 个答案:

答案 0 :(得分:0)

你可以这样做。简单的逻辑:

var arrayData = { "data": [
    { "speed": "0" },
    { "speed": "10" },
    { "speed": "2" },
    { "speed": "5" },
    { "speed": "4" },
    { "speed": "9" },
    { "speed": "0" },
    { "speed": "2" },
    { "speed": "4" },
    { "speed": "33" },
    { "speed": "0" },
]}; 
var key = 0;
var innerArray=[{}];
arrayData.data.forEach((obj, index)=>{
   if(obj.speed === "0"){
     //check that this is not last object 
     if(index+1 !== arrayData.data.length){
      key++;
      innerArray[0][key]=[];
     }
   } else {
      innerArray[0][key].push(obj); 
   }
});
var resultArray  = { "data": innerArray}; 
console.log(resultArray)

答案 1 :(得分:0)

 const result = [];
 input.reduce((trip, {speed}) => speed === "0" && trip.length ? (result.push(trip), []) : (trip.push({speed}), trip), []);

只要发生0,就开始新的旅行,如果不是只是将数据添加到旅行中。

如果您更喜欢命令式而非函数式编程:

const result = [];
var trip = [];
for(const {speed} of input){
   if(speed === "0" && trip.length){
     result.push(trip);
     trip = [];
   }else{
     trip.push({speed});
   }
}