Javascript 使用已删除的值创建新数组(React Native)

Javascript 使用已删除的值创建新数组(React Native),javascript,arrays,object,react-native,Javascript,Arrays,Object,React Native,我有一个这样的数组: [ Object { "hex": "#00b2b9", "label": "text", "value": "364", }, Object { "hex": "#50690e", "label": "text", "value": "354", }, Object { "hex": "#925fa3", "label": "text", "value": "355" }] 我还有另一个数组: Array [ "355", "356" ] 我希望在第一个数组中创建一个

我有一个这样的数组:

[
Object {
"hex": "#00b2b9",
"label": "text",
"value": "364",
},
Object {
"hex": "#50690e",
"label": "text",
"value": "354",
},
Object {
"hex": "#925fa3",
"label": "text",
"value": "355"
}]
我还有另一个数组:

Array [
"355",
"356"
]
我希望在第一个数组中创建一个包含值355和356的对象。我尝试了使用.filter()。。。但我是JS的新手&React Native:-)

我尝试了一些东西,但几乎每次我只使用值重新创建数组时(我丢失了里面的对象)

我想做的是: 如果在我的第一个数组中找到355和356,我将删除带有它们的对象,并使用剩下的唯一对象(值364)重新创建我的数组

我在想这样的事情: myFirstArray.filter(item=>item.value!=mySecondArray.value)但它没有成功


感谢您的帮助

您就快到了,只需使用确定项目的值是否在第二个数组中:

myFirstArray.filter(item => !mySecondArray.includes(item.value))
让myFirstArray=[{
“十六进制”:“00b2b9”,
“标签”:“文本”,
“价值”:“364”,
},
{
“十六进制”:“#50690e”,
“标签”:“文本”,
“价值”:“354”,
},
{
“十六进制”:“#925fa3”,
“标签”:“文本”,
“值”:“355”
}
]
让mySecondArray=[
"355",
"356"
]
console.log(
myFirstArray.filter(item=>!mySecondArray.includes(item.value))

)
您就快到了,只需使用确定项目的值是否在第二个数组中:

myFirstArray.filter(item => !mySecondArray.includes(item.value))
让myFirstArray=[{
“十六进制”:“00b2b9”,
“标签”:“文本”,
“价值”:“364”,
},
{
“十六进制”:“#50690e”,
“标签”:“文本”,
“价值”:“354”,
},
{
“十六进制”:“#925fa3”,
“标签”:“文本”,
“值”:“355”
}
]
让mySecondArray=[
"355",
"356"
]
console.log(
myFirstArray.filter(item=>!mySecondArray.includes(item.value))

)
前面的答案涉及多次迭代id的数组

一个性能更好的解决方案是将id存储在一个集合中,然后将其与过滤器结合使用以生成新数组

const arr = [
     {
    "hex": "#00b2b9",
    "label": "text",
    "value": "364",
    },
     ...,
     {
    "hex": "#925fa3",
    "label": "text",
    "value": "355"
    }];

const ids = ["354", "355"];

const idSet = new Set(ids);
const output = arr.filter(e => !idSet.has(e.value));

前面的答案涉及多次迭代id的数组

一个性能更好的解决方案是将id存储在一个集合中,然后将其与过滤器结合使用以生成新数组

const arr = [
     {
    "hex": "#00b2b9",
    "label": "text",
    "value": "364",
    },
     ...,
     {
    "hex": "#925fa3",
    "label": "text",
    "value": "355"
    }];

const ids = ["354", "355"];

const idSet = new Set(ids);
const output = arr.filter(e => !idSet.has(e.value));

你试过了吗?你试过了吗?谢谢你,卢卡!它正在工作。我是如此接近,但最好现在就理解这个概念!谢谢你,卢卡!它正在工作。我是如此接近,但最好现在就理解这个概念!谢谢你,拉扎尔!它起作用了。你们都有同样的想法。很酷,谢谢你,拉扎!它起作用了。你们都有同样的想法。太酷了