如何解决二维数组循环得到数据一样的问题

发布于 2022-09-30 23:10:59 字数 363 浏览 55 评论 0

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;
         }
    }
}

image.png
不用net set。。自己写方法。怎么实现。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

谁与争疯 2022-10-07 23:10:59
for(var i=0;i<arr.length;i++){
    for(var a=0;a<arr2.length;a++){
        if(arr2[a] <arr[i]){
           sum.indexOf(arr2[a])<0&&sum.push(arr2[a])
             continue;
         }
    }
}
我恋#小黄人 2022-10-07 23:10:59

我还是感觉万能 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;
         }
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文