Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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_Ecmascript 6 - Fatal编程技术网

Javascript 如何将同一项分组到数组中?

Javascript 如何将同一项分组到数组中?,javascript,ecmascript-6,Javascript,Ecmascript 6,我的数据如下 [1,1,1,2,2,1,1,1,2,2,1,1,1,1,2,1,2,2] 如何将此数组设置为“喜欢” [[1,1,1], [2,2], [1,1,1], [2,2], [1,1,1,1,], [2], [1], [2,2]] 谢谢这应该能奏效。我添加了一个选项来选择自定义比较器函数,但默认值是严格相等 在有人说我应该用之前。forEach,这是用一个普通的旧的。。。由于性能原因,循环 function groupSubsequent(input, comparator = (

我的数据如下

[1,1,1,2,2,1,1,1,2,2,1,1,1,1,2,1,2,2]
如何将此数组设置为“喜欢”

[[1,1,1], [2,2], [1,1,1], [2,2], [1,1,1,1,], [2], [1], [2,2]]

谢谢

这应该能奏效。我添加了一个选项来选择自定义比较器函数,但默认值是严格相等

在有人说我应该用之前。forEach,这是用一个普通的旧的。。。由于性能原因,循环

function groupSubsequent(input, comparator = (a, b) => a === b) {
  const output = [];
  let currentGroup = null;
  for (let i = 0; i < input.length; i++) {
    const item = input[i];
    if (currentGroup === null || !comparator(currentGroup[currentGroup.length - 1], item)) {
      currentGroup = [];
      output.push(currentGroup);
    }
    currentGroup.push(item);
  }
  return output;
}

console.log(groupSubsequent([1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 2, 2]));

这应该能奏效。我添加了一个选项来选择自定义比较器函数,但默认值是严格相等

在有人说我应该用之前。forEach,这是用一个普通的旧的。。。由于性能原因,循环

function groupSubsequent(input, comparator = (a, b) => a === b) {
  const output = [];
  let currentGroup = null;
  for (let i = 0; i < input.length; i++) {
    const item = input[i];
    if (currentGroup === null || !comparator(currentGroup[currentGroup.length - 1], item)) {
      currentGroup = [];
      output.push(currentGroup);
    }
    currentGroup.push(item);
  }
  return output;
}

console.log(groupSubsequent([1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 2, 2]));
您可以使用reduce方法执行此操作,并检查前一个元素i-1是否等于当前元素

常量数据=[1,1,1,2,2,1,1,1,2,2,1,1,1,1,1,1,2,1,2] const result=data.reducer,e,i,a=>{ 设last=r[r.长度-1] if!last | | e!==a[i-1]r.push[e] 最后一个是普什 返回r }, [] logresult您可以使用reduce方法执行此操作,并检查前面的元素i-1是否等于当前元素

常量数据=[1,1,1,2,2,1,1,1,2,2,1,1,1,1,1,1,2,1,2] const result=data.reducer,e,i,a=>{ 设last=r[r.长度-1] if!last | | e!==a[i-1]r.push[e] 最后一个是普什 返回r }, []
如果当前元素与最后一个元素不匹配,则可以执行简单的reduce并将新数组推送到累加器

常量数据=[1,1,1,2,2,1,1,1,2,2,1,1,1,1,1,1,2,1,2]; const res=data.reduceac,cur=>{ const last=acc[acc.length-1]| |[] 如果cur!==last[last.length-1]{ acc.push[当前] }否则{ acc[acc.length-1]。pushcur } 返回acc; }, []
logres如果当前元素与最后一个元素不匹配,您可以执行简单的reduce并将新数组推送到累加器

常量数据=[1,1,1,2,2,1,1,1,2,2,1,1,1,1,1,1,2,1,2]; const res=data.reduceac,cur=>{ const last=acc[acc.length-1]| |[] 如果cur!==last[last.length-1]{ acc.push[当前] }否则{ acc[acc.length-1]。pushcur } 返回acc; }, []
console.logres您可以使用array reduce执行此操作:

常量arr=[1,1,1,2,2,1,1,1,2,2,1,1,1,1,1,1,2,1,2]; const result=arr.reducecarrier,item=>{ const lastarrayincharrier=carrier[carrier.length-1];//获取最后一个子数组 如果数组的lastArrayInCarrier实例&&lastArrayInCarrier[0]==项{//如果最后一个子数组包含与当前迭代相同的数字,请将其追加 lastArrayInCarrier.pushitem; }else{//else使用新编号创建新子数组 承运人.推送[项目] } 返回载体; }, []; console.logresult; 输出:

[ [ 1, 1, 1 ], [ 2, 2 ], [ 1, 1, 1 ], [ 2, 2 ], [ 1, 1, 1, 1 ], [ 2 ], [ 1 ], [ 2, 2 ] ]
您可以使用array reduce执行此操作:

常量arr=[1,1,1,2,2,1,1,1,2,2,1,1,1,1,1,1,2,1,2]; const result=arr.reducecarrier,item=>{ const lastarrayincharrier=carrier[carrier.length-1];//获取最后一个子数组 如果数组的lastArrayInCarrier实例&&lastArrayInCarrier[0]==项{//如果最后一个子数组包含与当前迭代相同的数字,请将其追加 lastArrayInCarrier.pushitem; }else{//else使用新编号创建新子数组 承运人.推送[项目] } 返回载体; }, []; console.logresult; 输出:

[ [ 1, 1, 1 ], [ 2, 2 ], [ 1, 1, 1 ], [ 2, 2 ], [ 1, 1, 1, 1 ], [ 2 ], [ 1 ], [ 2, 2 ] ] var x=[1,1,1,2,2,1,1,1,2,2,1,1,1,1,1,2,1,2]; var arr=[] var temp=[] 对于i=0;我 var x=[1,1,1,2,2,1,1,1,2,2,1,1,1,1,1,2,1,2]; var arr=[] var temp=[] 对于i=0;我