Javascript 过滤出对象中的特定关键帧
我正在写出一个对象的键/值对。我试图过滤掉对象中的两个关键点,如下所示:Javascript 过滤出对象中的特定关键帧,javascript,reactjs,react-native,ecmascript-6,Javascript,Reactjs,React Native,Ecmascript 6,我正在写出一个对象的键/值对。我试图过滤掉对象中的两个关键点,如下所示: {Object.entries(params.char).filter('Attribute1').filter('Attribute2').map(([key,value], index) => <Text key={key}>{key}</Text>)} 但是,当我运行此命令时,会出现以下错误: “Array.prototype.filter回调必须是函数” 我不太确定如何解决这个问题,
{Object.entries(params.char).filter('Attribute1').filter('Attribute2').map(([key,value], index) => <Text key={key}>{key}</Text>)}
但是,当我运行此命令时,会出现以下错误:
“Array.prototype.filter回调必须是函数”
我不太确定如何解决这个问题,但有没有办法解决这个问题,还是我做错了
谢谢 数组方法接受函数作为参数,而不是字符串。所以请用这个:
Object.entries(params.char).filter((item) => (item.indexOf('Attribute1') || item.indexOf('Attribute2') > -1 ))...
让ob={
属性1:11,
属性2:22,
属性3:33
};
console.log('notfiltered',Object.entries(ob));
让result=Object.entries(ob.filter)((item)=>(item.indexOf('Attribute1')>-1 | | item.indexOf('Attribute2')>-1));
log('Filtered:',result)
数组方法接受函数作为参数,而不是字符串。所以请用这个:
Object.entries(params.char).filter((item) => (item.indexOf('Attribute1') || item.indexOf('Attribute2') > -1 ))...
让ob={
属性1:11,
属性2:22,
属性3:33
};
console.log('notfiltered',Object.entries(ob));
让result=Object.entries(ob.filter)((item)=>(item.indexOf('Attribute1')>-1 | | item.indexOf('Attribute2')>-1));
console.log('Filtered:',result)
据我所知,您只想为属性1和属性2创建文本元素,不必链接过滤器……您可以一次性完成:
{Object.entries(params.char).filter(touple =>
(touple[0] === 'Attribute1' || touple[0] === 'Attribute2')).map(touple => <Text key={touple[0]}>{touple[0]}</Text>)}
{Object.entries(params.char).filter(touple=>
(touple[0]==='Attribute1'| | touple[0]=='Attribute2')).map(touple=>{touple[0]}
据我所知,您只想为属性1和属性2创建文本元素,而不必链接过滤器……您可以一次完成:
{Object.entries(params.char).filter(touple =>
(touple[0] === 'Attribute1' || touple[0] === 'Attribute2')).map(touple => <Text key={touple[0]}>{touple[0]}</Text>)}
{Object.entries(params.char).filter(touple=>
(touple[0]==='Attribute1'| | touple[0]=='Attribute2')).map(touple=>{touple[0]}
你几乎是自己做的:)
答案如下:
render() {
const textElements = Object.entries(params.char)
.filter(([key]) => key !== 'Attribute1' && key !== 'Attribute2')
.map(([key, value]) => <Text key={key}>{key}, {value}</Text>);
return (
<View>
{textElements}
</View>
);
}
render(){
const textElements=Object.entries(params.char)
.filter(([key])=>key!==“Attribute1”和&key!==“Attribute2”)
.map(([key,value])=>{key},{value});
返回(
{textElements}
);
}
你几乎是自己做的:)
答案如下:
render() {
const textElements = Object.entries(params.char)
.filter(([key]) => key !== 'Attribute1' && key !== 'Attribute2')
.map(([key, value]) => <Text key={key}>{key}, {value}</Text>);
return (
<View>
{textElements}
</View>
);
}
render(){
const textElements=Object.entries(params.char)
.filter(([key])=>key!==“Attribute1”和&key!==“Attribute2”)
.map(([key,value])=>{key},{value});
返回(
{textElements}
);
}
我尝试了这个方法,虽然它消除了错误,但仍然显示了所有3个属性。我已经更新了答案并添加了代码片段,似乎工作正常。哦,等等,我需要删除代码中的“.map”([key,value],index)=>”部分吗?是否“filter”替换了“map”在这种情况下?谢谢!不,您仍然需要map
过滤器
仅用于过滤器属性,但map
负责返回组件。我尝试了这个方法,虽然它消除了错误,但仍然显示所有3个属性。我更新了答案并添加了代码段,它似乎工作正常。哦,等等,我需要删除吗e我代码中的“.map”([key,value],index)=>”部分?在这种情况下,“filter”是否替换了“map”?谢谢!不,您仍然需要map
filter
仅过滤属性,但map
负责返回组件。我正在尝试写出对象中的所有内容,除了两个部分(属性1和属性2)。我想过滤掉它们,这样它们就不会出现在屏幕上。谢谢!然后你可以把===切换到!==这样它就可以抓取除这两个之外的所有内容,或者你可以使用lodash的omit,它将返回除你传递的键以外的所有内容。这将不起作用,因为entries
方法返回数组的数组。请检查Object.entries
doc:Ah以前没有真正使用过它,所以如果你想要这个键,它将只是这个例子的第一个索引。我会更新我的代码谢谢。如果你只需要这个键,你也可以使用Object.keys。我正在试着写出对象中的所有内容,除了两个部分(Attribute1和Attribute2)。我想过滤掉它们,这样它们就不会出现在屏幕上。谢谢!然后你可以把===切换到!==这样它就可以抓取除这两个之外的所有内容,或者你可以使用lodash的omit,它将返回除你传递的键以外的所有内容。这将不起作用,因为entries
方法返回数组的数组。请检查Object.entries
doc:Ah以前没有真正使用过它,所以如果你想要密钥,它将只是该文件的第一个索引。我会更新我的代码谢谢。如果你只需要密钥,你也可以使用Object.keys