JavaScript를 사용하여 객체에 값이 존재하는지 확인하는 방법
JavaScript에 개체가 있습니다.
var obj = {
"a": "test1",
"b": "test2"
}
test1이 개체에 값으로 존재하는지 확인하려면 어떻게 해야 합니까?
개체의 값을 배열로 변환하고 문자열이 있는지 테스트할 수 있습니다.개체가 중첩되지 않고 문자열이 정확하게 일치한다고 가정합니다.
var obj = { a: 'test1', b: 'test2' };
if (Object.values(obj).indexOf('test1') > -1) {
console.log('has test1');
}
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values
최단 ES6+ 라이너 1개:
let exists = Object.values(obj).includes("test1");
배열 방법을 사용할 수 있습니다..some
:
var exists = Object.keys(obj).some(function(k) {
return obj[k] === "test1";
});
시도:
var obj = {
"a": "test1",
"b": "test2"
};
Object.keys(obj).forEach(function(key) {
if (obj[key] == 'test1') {
alert('exists');
}
});
또는
var obj = {
"a": "test1",
"b": "test2"
};
var found = Object.keys(obj).filter(function(key) {
return obj[key] === 'test1';
});
if (found.length) {
alert('exists');
}
이 작업은 다음에 대해 수행되지 않습니다.NaN
그리고.-0
그 가치들을 위하여.사용할 수 있습니다(대신).===
) ECMA스크립트 6의 새로운 기능:
Object.is(obj[key], value);
최신 브라우저에서는 다음을 사용할 수도 있습니다.
var obj = {
"a": "test1",
"b": "test2"
};
if (Object.values(obj).includes('test1')) {
alert('exists');
}
루프 사용:
for (let k in obj) {
if (obj[k] === "test1") {
return true;
}
}
그
Object.values()
메소드는 주어진 객체의 고유한 열거 가능한 속성 값의 배열을 반환합니다.for...in
루프(차이점은 for-in 루프가 프로토타입 체인에서도 속성을 열거한다는 것입니다.)
그런 다음 indexOf() 메서드를 사용합니다.
그
indexOf()
method는 지정된 요소가 배열에서 발견될 수 있는 첫 번째 인덱스를 반환합니다. 또는 요소가 없으면 -1을 반환합니다.
예:
Object.values(obj).indexOf("test`") >= 0
더 자세한 예는 다음과 같습니다.
var obj = {
"a": "test1",
"b": "test2"
}
console.log(Object.values(obj).indexOf("test1")); // 0
console.log(Object.values(obj).indexOf("test2")); // 1
console.log(Object.values(obj).indexOf("test1") >= 0); // true
console.log(Object.values(obj).indexOf("test2") >= 0); // true
console.log(Object.values(obj).indexOf("test10")); // -1
console.log(Object.values(obj).indexOf("test10") >= 0); // false
원라이너의 경우, 저는 이렇게 말할 것입니다.
exist = Object.values(obj).includes("test1");
console.log(exist);
이 모든 예제를 사용하여 테스트를 수행했고, 이를 Node.js v8.11.2에서 실행했습니다.이를 참고하여 최상의 선택을 선택하십시오.
let i, tt;
const obj = { a: 'test1', b: 'test2', c: 'test3', d: 'test4', e: 'test5', f: 'test6' };
console.time("test1")
i = 0;
for( ; i<1000000; i=i+1) {
if (Object.values(obj).indexOf('test4') > -1) {
tt = true;
}
}
console.timeEnd("test1")
console.time("test1.1")
i = 0;
for( ; i<1000000 ; i=i+1) {
if (~Object.values(obj).indexOf('test4')) {
tt = true;
}
}
console.timeEnd("test1.1")
console.time("test2")
i = 0;
for( ; i<1000000; i=i+1) {
if (Object.values(obj).includes('test4')) {
tt = true;
}
}
console.timeEnd("test2")
console.time("test3")
i = 0;
for( ; i<1000000 ; i=i+1) {
for(const item in obj) {
if(obj[item] == 'test4') {
tt = true;
break;
}
}
}
console.timeEnd("test3")
console.time("test3.1")
i = 0;
for( ; i<1000000; i=i+1) {
for(const [item, value] in obj) {
if(value == 'test4') {
tt = true;
break;
}
}
}
console.timeEnd("test3.1")
console.time("test4")
i = 0;
for( ; i<1000000; i=i+1) {
tt = Object.values(obj).some((val, val2) => {
return val == "test4"
});
}
console.timeEnd("test4")
console.time("test5")
i = 0;
for( ; i<1000000; i=i+1) {
const arr = Object.keys(obj);
const len = arr.length;
let i2 = 0;
for( ; i2<len ; i2=i2+1) {
if(obj[arr[i2]] == "test4") {
tt = true;
break;
}
}
}
console.timeEnd("test5")
내 서버의 출력
test1: 272.325 ms
test1.1: 246.316 ms
test2: 251.98 0ms
test3: 73.284 ms
test3.1: 102.029 ms
test4: 339.299 ms
test5: 85.527 ms
return Object.values(obj).includes('test1')
당신은 이것을 시도할 수 있습니다.
var obj = {
"a": "test1",
"b": "test2"
};
const findSpecificStr = (obj, str) => {
return Object.values(obj).includes(str);
}
findSpecificStr(obj, 'test1');
사용해 볼 수 있습니다.
function checkIfExistingValue(obj, key, value) {
return obj.hasOwnProperty(key) && obj[key] === value;
}
var test = [{name : "jack", sex: F}, {name: "joe", sex: M}]
console.log(test.some(function(person) { return checkIfExistingValue(person, "name", "jack"); }));
새로운 버전의 if ecma 스크립트에서는 이제 다음을 통해 vslues를 확인할 수 있습니다.?.
운영..
객체, 중첩 또는 객체의 값을 확인하는 것이 매우 간단하고 쉽습니다.
var obj = {
"a": "test1",
"b": "test2"
}
if(obj?.a) return "i got the value"
Javascript에서 가장 많이 사용되는 원시 유형은 Object입니다.
이 어레이, 기능 등도 사용할 수 있습니다.
aFunc = () => { return "gotcha"; }
aFunc?.() // returns gotcha
myArray = [1,2,3]
myArray?.[3] // returns undefined
감사해요.
ES2017에서는 개체에 대한 고유한 열거형 속성 값의 배열을 반환할 수 있는 Object.values()라는 새로운 메서드를 도입했습니다.
개체 값에 값이 있는지 확인하려면 이 작업을 수행할 수 있습니다.
let found = Object.values(africanCountries).includes('Nigeria');
if (found) {
// code
}
개체 키에 존재 여부를 확인할 수 있습니다.
let found = Object.keys(africanCountries).includes('Nigeria');
if (found) {
// code
}
Object.keys()를 사용하여 개체에 값을 찾는 가장 좋은 방법이 있습니다.
obj = {
"India" : {
"Karnataka" : ["Bangalore", "Mysore"],
"Maharashtra" : ["Mumbai", "Pune"]
},
"USA" : {
"Texas" : ["Dallas", "Houston"],
"IL" : ["Chicago", "Aurora", "Pune"]
}
}
function nameCity(e){
var finalAns = []
var ans = [];
ans = Object.keys(e).forEach((a)=>{
for(var c in e[a]){
e[a][c].forEach(v=>{
if(v === "Pune"){
finalAns.push(c)
}
})
}
})
console.log(finalAns)
}
nameCity(obj)
getValue = function (object, key) {
return key.split(".").reduce(function (obj, val) {
return (typeof obj == "undefined" || obj === null || obj === "") ? obj : (_.isString(obj[val]) ? obj[val].trim() : obj[val]);}, object);
};
var obj = {
"a": "test1",
"b": "test2"
};
호출된 함수:
getValue(obj, "a");
var obj = {"a": "test1", "b": "test2"};
var getValuesOfObject = Object.values(obj)
for(index = 0; index < getValuesOfObject.length; index++){
return Boolean(getValuesOfObject[index] === "test1")
}
Object.values() 메서드가 지정된 개체(obj) 자체 열거 가능한 속성 값을 포함하는 배열(getValuesOfObject에 할당됨)을 반환했습니다.어레이는 다음을 사용하여 반복되었습니다.for
루프 - 각 값(객체에서 getValues에 있는 값)을 검색하고 부울() 함수를 반환하여 식("text1"이 루프 배열에 있는 값)이 참인지 확인합니다.
복잡한 구조의 경우 다음과 같은 방법이 있습니다.
const obj = {
test: [{t: 't'}, {t1: 't1'}, {t2: 't2'}],
rest: [{r: 'r'}, {r1: 'r1'}, {r2: 'r2'}]
}
console.log(JSON.stringify(obj).includes(JSON.stringify({r1: 'r1'}))) // returns true
console.log(JSON.stringify(obj).includes(JSON.stringify({r1: 'r2'}))) // returns false
_.has()
경로가 개체의 직접 속성인지 여부를 확인하는 데 사용됩니다.경로가 존재하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
var object = { 'a': { 'b': 2 } }; console.log(_.has(object, 'a.b')); console.log(_.has(object, ['a','b'])); console.log(_.has(object, ['a','b','c']));
출력: true true false
문서 참조: https://developer.mozilla.org/enUS/docs/Web/JavaScript/Reference/Global_Objects/Object/values
Object.values
하고 배열 을 "" "" "" "" "" ""로 반환합니다.array.includes
,array.some
,indexOF
값의 존재 여부를 확인할 수 있습니다.
이에 대한 간단한 답변은 아래와 같습니다.
이것은 모든 자바스크립트 유형이 프로토타입에 "생성자" 속성을 가지고 있기 때문에 작동합니다.
let array = []
array.constructor === Array
// => true
let data = {}
data.constructor === Object
// => true
이것은 단순한 수표일 것입니다.
예 1
var myObj = {"a": "test1"}
if(myObj.a == "test1") {
alert("test1 exists!");
}
언급URL : https://stackoverflow.com/questions/35948669/how-to-check-if-a-value-exists-in-an-object-using-javascript
'it-source' 카테고리의 다른 글
Mac OS X에서 C 프로그램을 컴파일하고 실행하는 방법 (0) | 2023.08.19 |
---|---|
스트럿츠2 대 스프링3 (0) | 2023.08.19 |
var self = 이거? (0) | 2023.08.14 |
마스터가 다운된 경우 Mysql 마스터-마스터 복제 (0) | 2023.08.14 |
Oracle SQL: 테이블 이름 대신 사용되는 변수 (0) | 2023.08.14 |