lodash에서 포함 방법을 사용하여 객체가 컬렉션에 있는지 확인하려면 어떻게 해야 합니까?
lodash는 내가 다음과 같은 기본 데이터 유형의 멤버쉽을 확인할 수 있게 해줍니다.includes
:
_.includes([1, 2, 3], 2)
> true
그러나 다음은 작동하지 않습니다.
_.includes([{"a": 1}, {"b": 2}], {"b": 2})
> false
컬렉션을 통해 검색하는 다음 방법이 잘 되는 것 같아 혼란스럽습니다.
_.where([{"a": 1}, {"b": 2}], {"b": 2})
> {"b": 2}
_.find([{"a": 1}, {"b": 2}], {"b": 2})
> {"b": 2}
내가 뭘 잘못하고 있는 거지?다음을 사용하여 컬렉션에서 개체의 멤버 자격을 확인하려면 어떻게 해야 합니까?includes
?
edit: 질문은 원래 lodash 버전 2.4.1에 대한 것이었고 lodash 4.0.0에 대해 업데이트되었습니다.
(이전에 호출됨)contains
그리고.include
) 방법은 참조(또는 더 정확하게는 다음과 같이 객체를 비교합니다.===
). 왜냐하면 두 개의 객체 리터럴은{"b": 2}
예제에서는 서로 다른 인스턴스를 나타내지만 동일하지 않습니다.공지사항:
({"b": 2} === {"b": 2})
> false
그러나 이것은 하나의 인스턴스만 있기 때문에 작동합니다.{"b": 2}
:
var a = {"a": 1}, b = {"b": 2};
_.includes([a, b], b);
> true
반면, (v4에서 사용되지 않음) 및 메서드는 속성별로 개체를 비교하므로 참조 동일성이 필요하지 않습니다.의 대안으로includes
, 시도해 볼 수도 있습니다.any
):
_.some([{"a": 1}, {"b": 2}], {"b": 2})
> true
답변 보완:p.s.w.g
, 이것을 달성하기 위한 3가지 다른 방법은 다음과 같습니다.lodash
4.17.5
, 사용하지 않고 _.includes()
:
개체를 추가할 것이라고 말합니다.entry
물건들의 집합체로numbers
, 만일의 경우에만entry
존재하지 않습니다.
let numbers = [
{ to: 1, from: 2 },
{ to: 3, from: 4 },
{ to: 5, from: 6 },
{ to: 7, from: 8 },
{ to: 1, from: 2 } // intentionally added duplicate
];
let entry = { to: 1, from: 2 };
/*
* 1. This will return the *index of the first* element that matches:
*/
_.findIndex(numbers, (o) => { return _.isMatch(o, entry) });
// output: 0
/*
* 2. This will return the entry that matches. Even if the entry exists
* multiple time, it is only returned once.
*/
_.find(numbers, (o) => { return _.isMatch(o, entry) });
// output: {to: 1, from: 2}
/*
* 3. This will return an array of objects containing all the matches.
* If an entry exists multiple times, if is returned multiple times.
*/
_.filter(numbers, _.matches(entry));
// output: [{to: 1, from: 2}, {to: 1, from: 2}]
반품을 원하시는 경우Boolean
, 첫 번째 경우 반환되는 인덱스를 확인할 수 있습니다.
_.findIndex(numbers, (o) => { return _.isMatch(o, entry) }) > -1;
// output: true
당신은 사용할 수 있습니다.find
당신의 문제를 해결하기 위해
const data = [{"a": 1}, {"b": 2}]
const item = {"b": 2}
find(data, item)
// (*): Returns the matched element, else undefined.
언급URL : https://stackoverflow.com/questions/25171143/how-do-i-use-the-includes-method-in-lodash-to-check-if-an-object-is-in-the-colle
'programing' 카테고리의 다른 글
리피터 내부의 트랙터 요소 찾기 (0) | 2023.10.26 |
---|---|
내용 유형 'application/json; charset=utf-8'이(가) 필요한 유형 'text/xml; charset=utf-8'이 아니므로 메시지를 처리할 수 없습니다. (0) | 2023.10.21 |
swift(iOS)에서 라디오 버튼과 체크박스를 만드는 방법? (0) | 2023.10.21 |
해결책을 검색한 후 워드프레스에서 All-in-One 마이그레이션을 읽을 수 있는 파일 (0) | 2023.10.21 |
연기 대 약속 (0) | 2023.10.21 |