Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.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 根据序列中的属性将数组拆分为块_Javascript_Arrays - Fatal编程技术网

Javascript 根据序列中的属性将数组拆分为块

Javascript 根据序列中的属性将数组拆分为块,javascript,arrays,Javascript,Arrays,有一个包含对象的数组 看起来是这样的: [{id:2},{id:3},{id:4},{id:9},{id:10},{id:11}] 因此,我希望: [{id:2,id:4},{id:9,id:11}] 不知道如何删除中间值(因为它们是连续的),以及在没有id时如何将其分组:5,6,7,8,这意味着序列中存在间隙。如果我理解正确,您希望将输入拆分为每个部分都有id值连续的对象的部分,然后只在每个部分包含该序列的第一个和最后一个对象 您可以按如下方式执行: var-input=[{id:2},

有一个包含对象的数组

看起来是这样的:

[{id:2},{id:3},{id:4},{id:9},{id:10},{id:11}]
因此,我希望:

[{id:2,id:4},{id:9,id:11}]

不知道如何删除中间值(因为它们是连续的),以及在没有
id
时如何将其分组:5,6,7,8,这意味着序列中存在间隙。

如果我理解正确,您希望将输入拆分为每个部分都有
id
值连续的对象的部分,然后只在每个部分包含该序列的第一个和最后一个对象

您可以按如下方式执行:

var-input=[{id:2},{id:3},{id:4},{id:9},{id:10},{id:11},{id:15},{id:16},{id:17},];
var结果=输入。减少((acc、obj、i)=>{
if(i&&input[i-1].id==obj.id-1){
acc.last[1]=obj;
}否则{
acc.push(acc.last=[obj]);
}
返回acc;
}, []);
控制台日志(结果)
.as控制台包装{最大高度:100%!重要;顶部:0;}

如果对象符合您的条件,您可以遍历该数组并将其添加到新数组中

var arrNew = [];
for(int i=0;i<arr.length;i++){
    var obj = arr[i];
    if(obj.id ==2 || obj.id==100){
        conitnue;
    }
    arrNew.push(obj);
}
var arrNew=[];

对于(int i=0;i您可以根据
id
对其进行分组,并为左和右属性使用不同的键

var数组=[{id:2},{id:3},{id:4},{id:9},{id:10},{id:11}],
结果=数组
.减少(功能(r,a){
var last=r[r.长度-1];
if(last&&last.right+1==a.id){
last.right=a.id;
}否则{
r、 推送({左:a.id,右:a.id});
}
返回r;
}, []);
console.log(结果);

.as控制台包装{最大高度:100%!重要;顶部:0;}
所需结果背后的逻辑是什么?我编写我想要的结果。删除中间值,并将其分离为两个对象。这甚至没有意义:因此,您有两个具有两倍相同键的对象。如果您的输入数组有7个元素,或8个元素,或9个元素,…一般原理是什么?首先将数组一分为二,然后只取fir每个?输入的st和最后一个元素可以是这个var输入=[{id:2},{id:3},{id:4},{id:9},{id:10},{id:11},{id:15},{id:16},{id:17},];我想要对它进行分组。这就是这个答案的作用。你测试了吗?我只是把数据放在代码段中。运行它。结果必须是id:2,id:4-不包括id:3。对不起,我必须纠正这个问题:现在中间的值被删除了。我不确定当一个组中只有一个值时你希望发生什么。比如对于
[{id:1},{id:5}]
。那么应该输出什么呢?目前我的答案只会产生:
[[{id:1}],{id:5}]