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