我有两个数组,两个数组循环遍历,截取掉其中一个数组中的labelID:4和另外一个数组中id不一样的

我有两个数组,两个数组循环遍历,截取掉其中一个数组中的labelID:4和另外一个数组中id不一样的

 var select = [{
    labelID:4,
},{
    labelID:5
},{
    labelID:7,
}];

var  publishedLabel = [{
           active : true
        createTime : null
        creatorID : 0
        high : 0
        id : 1
        low : 0
        modifierID : 0
        modifyTime : null
        name : "态度好"
        sort : 0
        status : 0
        type :0
       },{
           active : true
        createTime : null
        creatorID : 0
        high : 0
        id : 2
        low : 0
        modifierID : 0
        modifyTime : null
        name : "符合服务描述"
        sort : 0
        status : 0
        type :0
       },{
           active : true
        createTime : null
        creatorID : 0
        high : 0
        id : 3
        low : 0
        modifierID : 0
        modifyTime : null
        name : "态度好"
        sort : 0
        status : 0
        type :0
       },{
           active : true
        createTime : null
        creatorID : 0
        high : 0
        id : 4
        low : 0
        modifierID : 0
        modifyTime : null
        name : "态度好"
        sort : 0
        status : 0
        type :0
       },{
           active : true
        createTime : null
        creatorID : 0
        high : 0
        id : 5
        low : 0
        modifierID : 0
        modifyTime : null
        name : "态度好"
        sort : 0
        status : 0
        type :0
       },{
           active : true
        createTime : null
        creatorID : 0
        high : 0
        id : 6
        low : 0
        modifierID : 0
        modifyTime : null
        name : "态度好"
        sort : 0
        status : 0
        type :0
       },]


就是这两个数组,通过循环截取掉,select中labelID和publishedLabel中的id不一样的### 问题描述

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 1.9k
3 个回答

问题描述不清楚

// 选中的列表
var selectPublishedLabel = publishedLabel.filter(({ id }) =>
  select.find(({ labelID }) => id === labelID),
)
// 未选中的列表
var unselectPublishedLabel = publishedLabel.filter(
  ({ id }) => !select.find(({ labelID }) => id === labelID),
)

真心不明白你想表达的是什么意思,从字面上来理解,你是希望从 select 数组中去掉 labelID: 4 这一条,同时在 publishedLabel 只保留 id: 4 这一条,那么

function filterById(id) {
    const filteredSelect = select.filter(m => m.labelID !== id);
    const filteredPublishedLabel = publishedLabel.filter(m => m.id === id);
    return [filteredSelect, filteredPublishedLabel];
}

const [r1, r2] = filterById(4);
console.log(r1);
console.log(r2);

但是假如你想要的只是从 publishedLabel 中过滤掉 select 中已经有的 id,那么就应该这样

function filter() {
    const ids = new Set(select.map(m => m.labelID));
    return publishedLabel.filter(m => !ids.has(m.id));
}
console.log(filter());

如果这两个都没猜中你的意图,你还是先把问题说清楚吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题