Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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,我有一个javascript数组对象: var items = [ {address: 'abc'}, {address: 'abc'}, {address: 'abc'}, {address: 'abc'}, {address: 'wer'}, {address: 'xyz'}, {address: 'xyz'}, {address: 'xyz'} ]; 我想做的是把2个项目

我有一个javascript数组对象:

var items = [
               {address: 'abc'}, {address: 'abc'}, {address: 'abc'}, 
               {address: 'abc'}, {address: 'wer'}, {address: 'xyz'}, 
               {address: 'xyz'}, {address: 'xyz'}
            ];
我想做的是把2个项目看作一个项目。如果项目地址重复两次。。我认为这是一个项目。单个唯一项将被视为一个

我希望它的输出如下:

[
   {address: 'abc'}, {address: 'abc'}, 
   {address: 'wer'}, 
   {address: 'xyz'}, {address: 'xyz'}
];
abc , abc , abc SHOULD BE abc, abc
xyz , xyz, xyz SHOULD BE xyz, xyz
wer SHOULD BE wer
以上是预期输出

这个概念是这样的:

[
   {address: 'abc'}, {address: 'abc'}, 
   {address: 'wer'}, 
   {address: 'xyz'}, {address: 'xyz'}
];
abc , abc , abc SHOULD BE abc, abc
xyz , xyz, xyz SHOULD BE xyz, xyz
wer SHOULD BE wer
到目前为止,我尝试的是:

var items = [
           {address: 'abc'}, {address: 'abc'}, {address: 'abc'}, 
           {address: 'abc'}, {address: 'wer'}, {address: 'xyz'}, 
           {address: 'xyz'}, {address: 'xyz'}
        ];
  var itemsNew = [];
  var preItem  = '';
  var a        = 1;
  var x        = false;

  for(var i = 0; i < items.length; i++){

    var itemDeliveryAddress = items[i].address;

    if(a == 2){

      if(preItem == itemDeliveryAddress){

        preItem = '';
        a=1;
      }
      else {

        preItem = '';
        a=1;
        itemsNew.push(itemDeliveryAddress);
      }
    }
    else {

      a++;
      preItem = itemDeliveryAddress;
      itemsNew.push(itemDeliveryAddress);    
    }
  }

注意:我已经按升序对数组进行了排序

您可以使用计数器对其进行过滤,然后单击“下一步”

filter()
方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素

此建议使用
thisArg
,一个真正的空对象作为回调中的
This
对象

基本上,
这个[a.address]
是计数器,如果不存在,则用零初始化,然后递增一

计数后,计数器用于返回。如果该值为奇数,则该项将包含在结果集中

虽然
这个
在所有回调中都是持久的,但是不需要排序,因为计数器不需要特定的顺序

var items=[{address:'abc'},{address:'abc'},{address:'abc'},{address:'wer'},{address:'xyz'},{address:'xyz'},{address:'xyz'},{address:'xyz'},
结果=项。过滤器(函数(a){
这个[地址]=(这个[地址]| | 0)+1;
返回此[a.地址]%2;
},Object.create(null));
控制台日志(结果)您可以使用来修改就地阵列

//初始化数组(已排序)
var items=[{address:'abc'},{address:'abc'},{address:'abc'},{address:'wer'},{address:'xyz'},{address:'xyz'},{address:'xyz'},};
var groupedProperty=“地址”//修改此字符串以更改分组依据的属性
//遍历排序数组
对于(var i=1;ii)自动向后移动

控制台日志(项目)
在预期的输出中,您使用JSON格式,并通过插入新行进行分组。这就是你想要的输出吗?或者你正在描述一个你想要的东西?请注意,您没有对任何内容进行分组,甚至在该对象中也没有分组。它只是一个包含5个元素的数组。事实上,在逗号后添加换行符并不会对这样的对象带来任何更改。我希望以JSON格式输出。好的是,使用splice,并希望保留每对对象中的一个,标记正好对齐,因此不需要对
I
进行任何损坏你能解释一下这段代码吗。。我想了解代码的每一步。我还需要先对数组排序吗?@Hassandar。DoneYour代码在这个数组中运行不正常:var items=[{deliveryAddress:'Airport Rd'},{deliveryAddress:'Airport Rd'},{deliveryAddress:'Lahore'},{deliveryAddress:'Lahore'},{deliveryAddress:'Lahore'},{deliveryAddress:'Lahore'},{deliveryAddress:'Taxila'},{deliveryAddress:'Taxila'},{deliveryAddress:'Taxila'},{deliveryAddress:'Taxila'},{deliveryAddress:'Taxila'}];您是否修改了代码以便
项[i]。地址==项[i-1]。地址
现在是
项[i]。deliveryAddress==项[i-1].deliveryAddress
?你能解释一下我的代码吗..我想了解你代码的每一步。我还需要先对数组进行排序吗?你的代码在这个数组中运行不正常::::var items=[{deliveryAddress:'Airport Rd'},{deliveryAddress:'Airport Rd'},{deliveryAddress:'Airport Rd'},{deliveryAddress:'Lahore'},{deliveryAddress:'Lahore'},{deliveryAddress:'Lahore'},{deliveryAddress:'Taxila'},{deliveryAddress:'Taxila'},{deliveryAddress:'Taxila'},{deliveryAddress:'Taxila'},{deliveryAddress:'Taxila'}]应该有3个TasialaYu只有2个。应该有3个吗?为什么?因为是这样的。如果总共有4个相同的地址……它应该返回2个地址而不是4个。如果有5个相同的地址,它应该返回3个总地址,因为我们从4个相同的地址得到2个,所以第五个是剩余的,我们必须考虑第五O。我也是