修正了一些语法

时间:2019-01-20 21:49:52

标签: javascript arrays ecmascript-6 lodash

我正在尝试查看数据中的值是否与值数组匹配以返回true或false。

这是我到目前为止提出的...

acceptedGrades = ['A1','A2','A3','B1','B2','B3','C1','C2','C3'];

this.state.isValidGrade = _.every(acceptedGrades, d => item.grade === value);

例如如果item.grade返回A1 grade: 'A1',则返回true;如果item.grade返回的值不在acceptGrades中,则返回false。

我使用相同的语句来搜索具有hasOwnProperty的属性,这很好,只需要查找属性的值即可。

可以使用lodash库。

1 个答案:

答案 0 :(得分:3)

有两种方法可以解决这个问题。我认为您在findfilterincludesfindIndex之后。 every在这里不合适,因为它正在评估整个数组以确保所有值都满足您的条件。我认为,如果我理解正确,您就是在尝试将成绩与数组中的项目相匹配。

const acceptedGrades = ['A1','A2','A3','B1','B2','B3','C1','C2','C3'];

// Get first match:
console.log(acceptedGrades.find( g => g === 'B2')); // returns 'B2'

// Get All Matches:
console.log(acceptedGrades.filter( g => g === 'B2')); // returns ['B2']

// Get Index of first match:
console.log(acceptedGrades.findIndex( g => g === 'B2' )); // returns 4

// See if array 'includes' the value
console.log(acceptedGrades.includes('B2')); // returns true