Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 同一个值返回不同的lodash值_Javascript_React Native_Lodash - Fatal编程技术网

Javascript 同一个值返回不同的lodash值

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

案例1:

我将指定选项值
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;
  }