arrays - 如何查找 JSON 数据中的一项是否等于数组中的值之一?
问题描述
我已经找到并尝试.includes
帮助解决这个问题。但.includes
没有按我的预期工作。它实际上确实在 JSON 中找到了一个与另一个数组中的值匹配的项目,但它只匹配相似的值:
result_postid 数组:
[10,22,12,36,45,206]
来自 JSON 数据的 item.id:
[{"id":"5","username":"Mike"},{"id":"13","username":"Tom"},{"id":"28","username":"Jake"},{"id":"136","username":"Josie"},{"id":"400","username":"Bill"},{"id":"538","username":"Sam"}]
我试图弄清楚为什么某些值true
在应该清楚的时候仍然返回false
。然后我得出的结论.includes
实际上是36
取自inresult_postid
并将其与136
in匹配item.id
。这就是我设置 if 语句的方式.includes
:
{result_postid.includes(item.id) ?
<Text>True</Text>
:
<Text>False</Text>
}
这是结果:
result_postid | item.id | Result
10 != 5,13,28,136,400,538: False
22 != 5,13,28,136,400,538: False
12 != 5,13,28,136,400,538: False
36 = 5,13,28,136,400,538: True <--- this should be false
45 != 5,13,28,136,400,538: False
206 != 5,13,28,136,400,538: False
然后我用 Lodash 尝试了这个尝试:
{_.intersection(item.id, result_postid) ?
<Text>True</Text>
:
<Text>False</Text>
}
结果都来了true
,这是不正确的:
10 = 5,13,28,136,400,538: True
22 = 5,13,28,136,400,538: True
12 = 5,13,28,136,400,538: True
36 = 5,13,28,136,400,538: True
45 = 5,13,28,136,400,538: True
206 = 5,13,28,136,400,538: True
甚至可以将数组中的值与 JSON 数据进行比较,并显示一个值是否彼此相等,如果是的话?如果不是,是假的?
解决方案
这是一种获得所需结果的方法。由于您将字符串与整数进行比较,因此您的结果与您期望的不一样。
var data = [{"id":"5","username":"Mike"},{"id":"13","username":"Tom"},{"id":"28","username":"Jake"},{"id":"136","username":"Josie"},{"id":"400","username":"Bill"},{"id":"538","username":"Sam"}]
var arr = [10,22,12,36,45,206]
console.log(data.map(({id}) => arr.includes(+id)))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
通过这样做,+id
您可以在下一次操作之前将字符串转换为数字。
推荐阅读
- javascript - 如何在路线中包含可选航段?
- javascript - 通过 $emit 选择所有复选框不会重新渲染视图 - Vuejs
- mysql - 仅显示来自每个对话的最新消息
- django - 在 django 模板标签中获取 request.path
- java - 将数据发布到服务器时出现 Android Volley 错误
- stm32 - STM32F303C8代码没有进入while循环
- xquery - XQuery 切换测试节点
- sql - SQL Server - 当我加入的表比我正在更新的表有更多行时,使用基于内部连接的 CASE 更新列
- ffmpeg - ffmpeg 无法播放代理 Avid Interplay
- android - android - 在 ViewModel 类中使用新线程