java消除数组内重复的数字,js怎么把一个数组里面重复的数字去掉并且组成新的数组?...

给个比较简短的示例代码,注解里有写步骤123是什么:

const oldArray = ["100", "100", "2.3", "2.4", "101", "101", "3.6", "3.7", "102", "102", "4.1", "4.3"]

// 1. 去重 ["100", "2.3", "2.4", "101", "3.6", "3.7"]

// 2. 一维数组 转成 二维数组 [["100", "2.3", "2.4"], ["101", "3.6", "3.7"]]

// 3. 每个数组成员组合为对象 [{ type: "100", a: "2.3", b: "2.4" }]

const newArray = oldArray.filter((item, pos) => (

oldArray.indexOf(item) === pos

))

.reduce((rows, item, index) => (

(index % 3 === 0

? rows.push([item])

: rows[rows.length - 1].push(item)) && rows

), [])

.map(item => (

{ type: item[0], a: item[1], b: item[2] }

))

console.log(newArray)

以下给个直觉用for语句的示例,自订弹性会比较高,JS中调用函数自然是花费高,所以for语句的效能会比较好,能好到多少就要视情况测试,当然代码量会多些。步骤与上面类似:

// 1.去重

var oneArray = [];

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

if(oneArray.indexOf(oldArray[i]) === -1){

oneArray.push(oldArray[i]);

}

}

console.log(oneArray)

// 2.一维数组 转成 二维数组

var twoArray = [];

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

twoArray.push(oneArray.slice(i, i + 3));

}

console.log(twoArray)

// 3. 每个数组成员组合为对象

var threeArray = [];

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

threeArray.push({ type: twoArray[0], a: twoArray[1], b: twoArray[2] });

}

console.log(threeArray)

实际上用for语句,步骤2与3可以合在一起:

// 2, 3步骤可合并

var twoAndThreeArray = [];

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

twoAndThreeArray.push({ type: oneArray[i], a: oneArray[i+1], b: oneArray[i+2] });

}

console.log(twoAndThreeArray)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值