Как узнать, равен ли один из элементов в данных JSON одному из значений в массиве? - PullRequest
0 голосов
/ 26 мая 2018

Я нашел и опробовал .includes, чтобы помочь с этой проблемой.Но .includes не сработало, как я хотел.На самом деле он нашел один элемент в JSON, который соответствует значению в другом массиве, но он сопоставил только аналогичные значения :

массив result_postid :

[10,22,12,36,45,206]

item.id из данных JSON :

[{"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.Вот как я настроил оператор 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 и показать, равны ли одно значение друг другу, если такправда?Если нет, ложь?

1 Ответ

0 голосов
/ 18 августа 2018

Вот способ получить желаемый результат.Поскольку вы сравниваете строки с целыми числами, ваши результаты не соответствуют ожидаемым.

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, вы преобразуете строку в число перед следующей операцией.

...