使用javascript减少数组

使用javascript减少数组,javascript,arrays,reduce,Javascript,Arrays,Reduce,我有这样一个数组: myArray = [40, 40, 40, 40, 40, 80, 40, 40, 40, 40, 40, 40, 40, 40, 80, 40, 40, 40, 40, 40, 40, 40, 40] 我想这样减少它: myNewArray =[40, 80, 40, 80,40] 因此,如果要忽略连续的相同数字,请使用reduce var output = arr.reduce( ( a,c) => (a.slice(-1) == c ? "" : a.pus

我有这样一个数组:

myArray = [40, 40, 40, 40, 40, 80, 40, 40, 40, 40, 40, 40, 40, 40, 80, 40, 40, 40, 40, 40, 40, 40, 40]
我想这样减少它:

myNewArray =[40, 80, 40, 80,40]

因此,如果要忽略连续的相同数字,请使用
reduce

var output = arr.reduce( ( a,c) => (a.slice(-1) == c ? "" : a.push(c), a) ,[]);
演示

var输出=[40,40,40,40,40,80,40,40,40,40,40,40,40,80,40,40,40,40,40,40,40,40,40]。减少((a,c)=>(a.slice(-1)==c?”:a.push(c),a),[]);

console.log(输出)如果要忽略连续的相同数字,请使用
reduce

var output = arr.reduce( ( a,c) => (a.slice(-1) == c ? "" : a.push(c), a) ,[]);
演示

var输出=[40,40,40,40,40,80,40,40,40,40,40,40,40,80,40,40,40,40,40,40,40,40,40]。减少((a,c)=>(a.slice(-1)==c?”:a.push(c),a),[]);
console.log(输出)使用方法,通过比较主数组中以前的值或结果数组中最后插入的值,将值插入新数组

myArray=[40,40,40,40,40,80,40,40,40,40,40,40,40,80,40,40,40,40,40,40,40,40,40];
var res=myArray.reduce(函数(arr,v,i){
//检查索引是否为0或比较之前插入的值是否相同
//然后在数组中插入当前值
如果(!i | |(i&&arr[arr.length-1]!=v))arr.push(v);
//或者,比较数组本身中的上一个值
//如果(!i | |(i&&myArray[i-1]!=v))arr.push(v);
//返回数组引用
返回arr;
//将初始值设置为结果的数组
}, []);
控制台日志(res)使用方法,通过比较主数组中以前的值或结果数组中最后插入的值,将值插入新数组

myArray=[40,40,40,40,40,80,40,40,40,40,40,40,40,80,40,40,40,40,40,40,40,40,40];
var res=myArray.reduce(函数(arr,v,i){
//检查索引是否为0或比较之前插入的值是否相同
//然后在数组中插入当前值
如果(!i | |(i&&arr[arr.length-1]!=v))arr.push(v);
//或者,比较数组本身中的上一个值
//如果(!i | |(i&&myArray[i-1]!=v))arr.push(v);
//返回数组引用
返回arr;
//将初始值设置为结果的数组
}, []);

控制台日志(res)以上答案绝对正确,作为初学者,您可以从中很好地理解

<script>
myArray = [40, 40, 40, 40, 40, 80, 40, 40, 40, 40, 40, 40, 40, 40, 80, 40, 40, 40, 40, 40, 40, 40, 40];
newArray = [];

var lastValue;
for(var i = 0; i <= myArray.length; i++)
{
    if(myArray[i] != lastValue) // if the value doesn't match with last one.
    {
       newArray.push(myArray[i]);  // add to new array.
    }
    lastValue = myArray[i];
}
alert(newArray.join(','));

</script>

myArray=[40,40,40,40,80,40,40,40,40,40,40,40,40,80,40,40,40,40,40,40,40,40];
newArray=[];
var值;

对于(var i=0;i,以上答案绝对正确,作为初学者,您可以从中很好地理解

<script>
myArray = [40, 40, 40, 40, 40, 80, 40, 40, 40, 40, 40, 40, 40, 40, 80, 40, 40, 40, 40, 40, 40, 40, 40];
newArray = [];

var lastValue;
for(var i = 0; i <= myArray.length; i++)
{
    if(myArray[i] != lastValue) // if the value doesn't match with last one.
    {
       newArray.push(myArray[i]);  // add to new array.
    }
    lastValue = myArray[i];
}
alert(newArray.join(','));

</script>

myArray=[40,40,40,40,80,40,40,40,40,40,40,40,40,80,40,40,40,40,40,40,40,40];
newArray=[];
var值;

对于(var i=0;i您可以检查前置值和实际值。如果不同,则将该项作为结果集

var数组=[40,40,40,40,40,80,40,40,40,40,40,40,40,40,80,40,40,40,40,40,40,40,40,40],
filtered=array.filter((v,i,a)=>a[i-1]!==v);

console.log(过滤);
您可以检查前置值和实际值。如果不同,则将该项作为结果集

var数组=[40,40,40,40,40,80,40,40,40,40,40,40,40,40,80,40,40,40,40,40,40,40,40,40],
filtered=array.filter((v,i,a)=>a[i-1]!==v);

console.log(已过滤);
myNewArray=[40,80,40,80,40]不客气!…您想实现什么,一个解释会有所帮助。只需使用for循环来迭代所有条目,并检查相邻元素是否相同。如果不相同,请将您要比较的元素添加到新数组中。编辑:或者只使用gurvider372的答案,这更简单。myNewArray=[40,80,40,80,40]不客气!…您想实现什么,一个解释会有所帮助。只需使用for循环来迭代所有条目,并检查相邻元素是否相同。如果不相同,请将您要比较的元素添加到新数组中。编辑:或者只使用gurvider372的答案,这会更简单。