Javascript 同一个值返回不同的lodash值
案例1: 我将指定选项值Javascript 同一个值返回不同的lodash值,javascript,react-native,lodash,Javascript,React Native,Lodash,案例1: 我将指定选项值selectedZone设置为我的,它工作正常 是我的选择器: render() { let { zone, selectedZone, selectedCity } = this.state; return ( <DropDownMenu style={{ selectedOption: { marginBottom: -5
selectedZone
设置为我的
,它工作正常
是我的选择器:
render() {
let { zone, selectedZone, selectedCity } = this.state;
return (
<DropDownMenu
style={{
selectedOption: {
marginBottom: -5
}
}}
styleName="horizontal"
options={zone}
selectedOption={selectedZone || zone[0]}
onOptionSelected={(zone) => {
this.setState({ selectedZone: zone, selectedCity: zone.children[0] });
}}
titleProperty="brand"
valueProperty="id"
/>
...
)
}
lodash函数indexOf将在情况1中返回1
在案例2中重新运行-1,我认为它应该像案例1一样返回1
我比较了选项
和选择选项
看不出案例1和案例2有什么不同
有人能教我我错过了哪一步吗
任何帮助都将不胜感激。提前感谢。
当我指定从AsyncStorage中选择的值selectedZone(该值相同)时,它不工作并显示黄色警告。
Lodash与此关系不大——归根结底,JavaScript是如何比较对象的——只有当它们实际上是相同的底层对象时,它们中的两个才是相同的:
const a={name:“fred”};
常数b=a//字面上是同一个物体
常数c={name:“fred”}//看起来一样的物体
控制台日志(“a,b,c”,a,b,c);
log(“a==b”,a==b);
log(“a==c”,a==c)代码>当我指定从异步存储器中选择的值selectedZone(值相同)时,它不工作并显示黄色警告。
Lodash与此关系不大——归根结底,JavaScript是如何比较对象的——只有当它们实际上是相同的底层对象时,它们中的两个才是相同的:
const a={name:“fred”};
常数b=a//字面上是同一个物体
常数c={name:“fred”}//看起来一样的物体
控制台日志(“a,b,c”,a,b,c);
log(“a==b”,a==b);
log(“a==c”,a==c)代码>非常清楚。谢谢你@vlaz,我从你的回答中学到了很多!我现在知道如何解决我的问题了。再次感谢。刚刚做了一个小的更新,展示了关于findIndex
的一件值得了解的事情。我不知道你是否需要检查完全平等,但了解它是有用的。基于属性进行部分匹配可能更有用。这非常清楚。谢谢你@vlaz,我从你的回答中学到了很多!我现在知道如何解决我的问题了。再次感谢。刚刚做了一个小的更新,展示了关于findIndex
的一件值得了解的事情。我不知道你是否需要检查完全平等,但了解它是有用的。基于属性进行部分匹配可能更有用。
getSelectedOption() {
const { options, selectedOption } = this.props;
console.log('check options');
console.log(options);
console.log('check selectedOption');
console.log(selectedOption);
console.log('check _.indexOf(options, selectedOption');
console.log(_.indexOf(options, selectedOption));
if (_.indexOf(options, selectedOption) === -1) {
console.warn(
`Invalid \`selectedOption\` ${JSON.stringify(selectedOption)}, ` +
'DropDownMenu `selectedOption` must be a member of `options`.' +
'Check that you are using the same reference in both `options` and `selectedOption`.'
);
return;
}
return selectedOption;
}