javascript - array.includes 的奇怪行为对于字符串“sku”总是返回 false
问题描述
我面临 array.includes 功能的奇怪行为。我的工作是检查变量 feedProduct 是否具有所有必填字段。
function hasAllRequiredFields(requiredFields, feedProduct) {
// Prepare array for adding missing fields
let missing_required = [];
// Print all fields and there type (only for easier debugging)
console.log(feedProduct);
console.log(typeof feedProduct);
feedProduct.forEach(fp => {
console.log(fp)
console.log(typeof fp)
})
// Check if feedProduct array contains all required fields
console.log('')
console.log('CHECK IF ALL REQUIRED FIELDS ARE PRESENT')
requiredFields.forEach(wf => {
console.log(wf);
console.log(typeof wf);
if (!feedProduct.includes(wf)) {
missing_required.push(wf);
}
})
console.log('')
console.log('')
console.log('Missing')
console.log(missing_required)
return missing_required;
}
结果太奇怪了。如您所见,我正在数组 FeedProduct 中搜索字符串“sku”类型的字符串,其中包括字符串类型的字符串“sku”,但feedProduct.includes(wf)
返回 false
我也用 indexOf 尝试了相同的逻辑,结果是一样的。如果我在开发人员工具中复制/粘贴此代码,则结果将为 true,并且不会丢失任何字段
有人可以指出我还应该检查或做什么,这样我的代码才能正常工作。如果您需要任何其他信息,请告诉我,我会提供。谢谢
**更新
函数在其他函数中被调用,像这样
let hasRequiredFields = hasAllRequiredFields(preparedMappingFields.storeFeedMustHaveFields, header);
结果console.log(feedProduct[0], requiredFields[0], feedProduct[0] === requiredFields[0]);
如下
sku sku 错误
** 更新二
console.log(requiredFields[0].split('').map(c => c.charCodeAt(0)))
console.log(feedProduct[0].split('').map(c => c.charCodeAt(0)))
Log 1:
[ 115, 107, 117 ]
Log 2:
[ 65279, 115, 107, 117 ]
解决方案
你只是在寻找两个数组之间的区别,所以你也可以这样做......
const rf = ['foo', 'bar', 'baz'];
const fp = ['foo', 'baz']
const difference = rf.filter( x => !fp.includes(x))
console.log(difference)
如果你想获得交叉点,你会想要这样做......
const rf = ['foo', 'bar', 'baz'];
const fp = ['foo', 'baz']
const intersection = rf.filter( x => fp.includes(x))
console.log(intersection)
推荐阅读
- css - 我希望我的链接只在我点击它时改变颜色,而不是仅仅刷新页面。我如何用 CSS 做到这一点?
- javascript - :not 选择器在 jQuery 中没有按预期工作
- docker - 在 GitLab CI 中使用 QEMU 而不是 Docker 映像
- kendo-ui - 未捕获的错误:无效的模板 Kendu Dropdownlist
- python - 在 asyncpg 中出现“准备好的语句错误”
- python - 如何使用 Tensorflows GradientTape() 计算偏差
- python - Wait time between each action
- javascript - 如何更改内部选项的颜色
- github - github没有使用heroku在Windows上导入
- python - 带有进度条的 S3 Python 下载