如何查找JSON数据中的某个项是否等于数组中的某个值?

时间:2018-05-26 20:03:00

标签: arrays json if-statement react-native lodash

我找到并试用了.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实际上正在从result_postid获取 136 并将其与 item.id 匹配.includes。这是我使用{result_postid.includes(item.id) ? <Text>True</Text> : <Text>False</Text> } 设置if语句的方法:

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

结果如下:

{_.intersection(item.id, result_postid) ?
<Text>True</Text>
 :
 <Text>False</Text>
}

然后我用Lodash尝试了这个尝试:

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 ,这是不正确的:

class PathElement():  
  Children = []
  Element = ""
  IsStatic = True
  ChildrenCount = 0 

是否有可能甚至将数组中的值与JSON数据进行比较,并显示一个值是否相等,如果是这样的话?如果不是,假的?

1 个答案:

答案 0 :(得分:1)

这里是获得所需结果的一种方法。由于您要将字符串与整数进行比较,因此结果与预期不符。

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,您正在将字符串转换为数字,然后再进行下一个操作。