关于js数据处理的简单问题

let hasArr = [],

            deleteArr = [];
        that.skuProductList.forEach(x=>{
            that.skuProduct.forEach(y=>{
                if (x.goodsSpecificationIds == y.goodsSpecificationIds) {
                    hasArr.push(y.id)
                } else {
                    deleteArr.push(y.id)
                }
            })
        })
        console.log('hasArr',hasArr) // []
        console.log('deleteArr',deleteArr) // [3205, 3206, 3207, 3208, 3205, 3206, 3207, 3208]
        
        这种循环可以很方便的拿到相等的数据,但是如果不相等的数据就会有重复的数据,请问一般使用什么循环才能最快便捷拿到不相等的数据又不会重复。
阅读 1.5k
2 个回答
const listSpeIds = that.skuProductList.map(
  item => item.goodsSpecificationIds
)
const hasArr = that.skuProduct.filter(
  item => listSpeIds.indexOf(item.goodsSpecificationIds) >= 0
).map(item => item.id)
// 对应的
const deleteArr = that.skuProduct.filter(
  item => listSpeIds.indexOf(item.goodsSpecificationIds) < 0
).map(item => item.id)
新手上路,请多包涵
let tempArr = []
that.skuProduct.forEach(item => {
    tempArr['id' + item.goodsSpecificationIds] = item
})
that.skuProductList.forEach(item => {
    if (tempArr['id' + item.goodsSpecificationIds]) {
        hasArr.push(item.id)
    } else {
        deleteArr.push(item.id)
    }
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题