Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS按对象字段拆分对象数组_Javascript_Arrays_Split_Delimiter - Fatal编程技术网

Javascript JS按对象字段拆分对象数组

Javascript JS按对象字段拆分对象数组,javascript,arrays,split,delimiter,Javascript,Arrays,Split,Delimiter,我有一组令牌: [ {type: 'name', value: 'foo'}, {type: 'string', value: 'bar'}, {type: 'special', value: ','}, {type: 'name', value: 'buzz'} ] 我想用等于,的值来拆分它们: [ [ {type: 'name', value: 'foo'}, {type: 'string', value: 'bar'

我有一组令牌:

[
    {type: 'name', value: 'foo'},
    {type: 'string', value: 'bar'},
    {type: 'special', value: ','},
    {type: 'name', value: 'buzz'}
]
我想用等于
的值来拆分它们:

[
    [
        {type: 'name', value: 'foo'},
        {type: 'string', value: 'bar'}
    ],
    [
        {type: 'name', value: 'buzz'}
    ]
]
我应该怎么做?

您可以使用来迭代项目。有三种情况:

  • 该项的值为
    -添加不含该项的新子数组
  • 没有子数组-使用该项添加新的子数组
  • rest-将该项添加到最后一个子数组
  • const数据=[
    {type:'name',value:'foo'},
    {类型:'string',值:'bar'},
    {type:'special',value:','},
    {类型:'name',值:'buzz'}
    ];
    常量结果=数据减少((r,o)=>{
    如果(o.value===',')返回[…r,[];
    如果(!r.length)返回[[o]];
    r[r.length-1]。推(o);
    返回r;
    }, []);
    
    控制台日志(结果)

    让arr=[
    {type:'name',value:'foo'},
    {类型:'string',值:'bar'},
    {type:'special',value:','},
    {类型:'name',值:'buzz'}
    ]
    设op=[];
    设temp=[];
    arr.forEach((e,i)=>{
    如果(e.value=='、'&&temp.length){
    操作推送(温度);
    温度=[];
    }否则{
    温度推动(e);
    }
    });
    if(温度长度)操作推送(温度);
    
    控制台日志(op)你试过什么?具体需要什么帮助?嗯,我想到的唯一一件事是遍历数组并将对象放入数组中,然后当遇到逗号时,启动另一个数组。一定有更好的办法,但我实在想不起来。。