gpt4 book ai didi

javascript - 将对象数组的值与 React Native/Javascript 中的字符串进行比较

转载 作者:行者123 更新时间:2023-11-30 14:58:05 24 4
gpt4 key购买 nike

我正在尝试使用 If 语句将数组中对象的属性与字符串进行比较。我正在使用 for 循环,但出于某种原因,我似乎无法触发条件语句。这是我用来在 AsyncStorage 中存储对象的代码:

onPressNext= async () => {
if (this.state.selectedFrequency.length > 0) {
const selectedFrequency = this.state.selectedFrequency;
try {
await AsyncStorage.setItem('selectedFrequency', JSON.stringify(selectedFrequency));
} catch (error) {
// Error saving data
}

这是我稍后用来检索对象的代码:

onPressNext= async () => {

if (this.state.selectedExclusions.length > 0) {
try {
const value = await AsyncStorage.getItem('selectedFrequency');
if (value !== null) {
console.log(JSON.parse(value));
const selectedFrequency = JSON.parse(value);

for (let j = 0; j < selectedFrequency.length; j++) {
if (JSON.stringify(selectedFrequency[j].value) === 'Daily') {
selectedFrequency[j].splice(j, 1);
} else {
console.log(JSON.stringify(selectedFrequency[j].label));
}
}
}
} catch (error) {
// Error retrieving data
Alert.alert(
error,
'Sorry, there was an error',
[
{ text: strings.Okay, style: 'cancel' },
]
);
}

这就是数组的结构:

frequency = [
{ label: strings.Daily, value: 'Daily' },
{ label: strings.Weekly, value: 'Weekly' },
{ label: strings.Monthly, value: 'Monthly' },
{ label: strings.Every_Three_Months, value: '3 Months' },
{ label: strings.three_five_Years, value: '5 Years' },
{ label: strings.Ten_Years, value: '10 Years' }
];

我期望发生的情况是,如果对象数组包含一个字符串值为 Daily 的项目,那么该项目将被删除。因此 for 循环遍历数组,检查值并删除任何值为 Daily 的对象。如下所述,我认为问题出在 for 循环中的 If 语句中。

任何帮助将不胜感激!

最佳答案

const selectedFrequency = JSON.parse(value);
for (let j = 0; j < selectedFrequency.length; j++) {
if (JSON.stringify(selectedFrequency[j].value) === 'Daily')

您正在遍历从 AsyncStorage 返回的 selectedFrequency 字符串中的字符。 selectedFrequency 是一个字符串,对它运行 for 循环会得到“D”、“a”、“i”、“l”、“y”。当然,字符串上没有 value 方法,因此每个条件都只是比较 undefined === 'Daily'

您需要遍历 frequency 对象。即:

     for (let j = 0; j < frequency.length; j++) {
if (frequency[j].value === 'Daily')

关于javascript - 将对象数组的值与 React Native/Javascript 中的字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46944826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com