var arr=[1,2,3,4,5,6]
var arr2=[0,0.3,2]
var sum =[]
for(var i=0;i<arr.length;i++){
for(var a=0;a<arr2.length;a++){
if(arr2[a] <arr[i]){
sum.push(arr2[a])
continue;
}
}
}
不用net set。。自己写方法。怎么实现。
var arr=[1,2,3,4,5,6]
var arr2=[0,0.3,2]
var sum =[]
for(var i=0;i<arr.length;i++){
for(var a=0;a<arr2.length;a++){
if(arr2[a] <arr[i]){
sum.push(arr2[a])
continue;
}
}
}
不用net set。。自己写方法。怎么实现。
我还是感觉万能 Array.prototype.reduce
可以解决这个问题:
const sum = arr.reduce(
// a 是从一个 [] 开始
(a, b) => arr2.reduce(
// a2 是从最新的 a 开始
(a2, b2) =>
// 如果 b2 < b ,且当前结果数组中还没有 b2,那就把 b2 加上,否则直接返回当前的数组
b2 < b && !a2.includes(b2) ? a2.concat([b2]) : a2,
a
), []
)
// 如果不需要排序,把下面这一行去掉就可以了
.sort();
如果按原题主的方式去写,就是下面这样的:
var arr=[1,2,3,4,5,6]
var arr2=[0,0.3,2]
var sum =[]
for(var i=0;i<arr.length;i++){
for(var a=0;a<arr2.length;a++){
// 加一个 && !sum.includes(arr2[a]) 的判断就可以了
if(arr2[a] <arr[i] && !sum.includes(arr2[a])){
sum.push(arr2[a])
continue;
}
}
}
13 回答12.9k 阅读
7 回答2.1k 阅读
5 回答1.4k 阅读
3 回答1.3k 阅读✓ 已解决
5 回答1.2k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答942 阅读✓ 已解决