개체의 속성 이름을 가져오는 중
자바스크립트에서 그런 객체를 루프할 수 있는 방법이 있는지 궁금합니다.
for(var i in myObject) {
// ...
}
하지만 이렇게 각 자산의 이름을 얻습니다.
for(var i in myObject) {
separateObj[myObject[i].name] = myObject[i];
}
저는 구글에서 그것과 같은 것을 찾을 수 없는 것 같습니다.그들은 변수의 이름을 함께 전달하라고 하지만 이것은 제가 달성하고자 하는 것에 대한 옵션이 아닙니다.
도움을 주셔서 감사합니다.
Object.keys() 사용:
var myObject = { a: 'c', b: 'a', c: 'b' };
var keyNames = Object.keys(myObject);
console.log(keyNames); // Outputs ["a","b","c"]
Object.keys()
입력 개체에 속하는 속성 이름 배열을 제공합니다.
i
이름입니다.
for(var name in obj) {
alert(name);
var value = obj[name];
alert(value);
}
그래서 당신은 할 수 있습니다.
seperateObj[i] = myObject[i];
고지 사항 "물건이 부착된 속성 이름을 알 수 있습니까?"라는 질문으로 오해했지만, 일부 사람들이 검색하다가 여기에 올 수도 있기 때문에 답을 남겨두기로 결정했습니다.
아니요, 개체가 여러 속성에 연결될 수 있으므로 개체 이름을 알 수 없습니다.
var obj = {a:1};
var a = {x: obj, y: obj}
obj의 이름은 무엇입니까?
정말로 for 루프의 속성 이름만 원하는 것이 아닙니까?
for (var propName in obj) {
console.log("Iterating through prop with name", propName, " its value is ", obj[propName])
}
당신은 물체에서 쉽게 반복할 수 있습니다.
예: 객체가 vara = {a:'apple', b:'ball', c:'cat', d:'prefix', e:'prefix'}이면;
Object.keys(a).forEach(key => {
console.log(key) // returns the keys in an object
console.log(a[key]) // returns the appropriate value
})
"Object.keys(obj)" 이외에는 매우 간단한 "for...in" 루프가 있습니다. 이 루프는 개체의 열거 가능한 속성 이름 위에 루프합니다.
const obj = {"fName":"John","lName":"Doe"};
for (const key in obj) {
//This will give key
console.log(key);
//This will give value
console.log(obj[key]);
}
위치별로 개체 속성에 직접 액세스하는 경우...일반적으로 [0] 속성에 사용 가능...그래서 더 먼 곳에 대한 정보를 담고 있습니다또는 처음 로드된 외부 모듈 등에 대해 node.js 'sys.cache[0]'에 있습니다.
Object.keys( myObject )[ 0 ]
Object.keys( myObject )[ 1 ]
...
Object.keys( myObject )[ n ]
기본 언어에 따라 개체 또는 "array key" 또는 "array index"의 속성을 가져오려면...Object.keys() 메서드를 사용합니다.
중요한 점은 이 기능이 "현대 브라우저"와만 호환된다는 점입니다.
그래서 만약 당신의 물건이 불려진다면, 나의 물건은...
var c = 0;
for(c in myObject) {
console.log(Object.keys(myObject[c]));
}
왈라! 이것은 최신 파이어폭스와 i11 그리고 크롬에서 확실히 작동할 것입니다...
다음은 MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys 에 있는 문서입니다.
IN ES5
예: 다음과 같은 개체가 있습니다.
var ELEMENTS = {
STEP_ELEMENT: { ID: "0", imageName: "el_0.png" },
GREEN_ELEMENT: { ID: "1", imageName: "el_1.png" },
BLUE_ELEMENT: { ID: "2", imageName: "el_2.png" },
ORANGE_ELEMENT: { ID: "3", imageName: "el_3.png" },
PURPLE_ELEMENT: { ID: "4", imageName: "el_4.png" },
YELLOW_ELEMENT: { ID: "5", imageName: "el_5.png" }
};
이제 '0'을 매개 변수로 전달하면 'STEP_ELENTLENT'가 되고, '2'가 'BLUE_ELENTLENT'가 되는 함수를 가지려면 다음과 같이 하십시오.
function(elementId) {
var element = null;
Object.keys(ELEMENTS).forEach(function(key) {
if(ELEMENTS[key].ID === elementId.toString()){
element = key;
return;
}
});
return element;
}
이것은 아마도 문제에 대한 최선의 해결책은 아닐 것이지만 어떻게 해야 하는지에 대한 아이디어를 제공하는 것은 좋습니다.
건배.
2018년 현재, 당신은 사용할 수 있습니다.Object.getOwnPropertyNames()
개발자 Mozilla 설명서에 설명된 대로
const object1 = {
a: 1,
b: 2,
c: 3
};
console.log(Object.getOwnPropertyNames(object1));
// expected output: Array ["a", "b", "c"]
용사를 합니다.Object.keys()
에서 속획기기위능에서 Object
이름별로 속성을 검색하는 데 도움이 됩니다. 예를 들어 다음과 같습니다.
const Products = function(){
this.Product = "Product A";
this.Price = 9.99;
this.Quantity = 112;
};
// Simple find function case insensitive
let findPropByName = function(data, propertyName){
let props = [];
Object.keys(data).forEach(element => {
return props.push(element.toLowerCase());
});
console.log(props);
let i = props.indexOf(propertyName.toLowerCase());
if(i > -1){
return props[i];
}
return false;
};
// calling the function
let products = new Products();
console.log(findPropByName(products, 'quantity'));
먼저 올린 for/in 루프를 수행할 때 i가 속성 이름입니다.속성 이름 i를 가지고 있고 myObject[i]를 수행하여 값에 액세스할 수 있습니다.
이러한 솔루션도 작동합니다.
// Solution One
function removeProperty(obj, prop) {
var bool;
var keys = Object.keys(obj);
for (var i = 0; i < keys.length; i++) {
if (keys[i] === prop) {
delete obj[prop];
bool = true;
}
}
return Boolean(bool);
}
//Solution two
function removeProperty(obj, prop) {
var bool;
if (obj.hasOwnProperty(prop)) {
bool = true;
delete obj[prop];
}
return Boolean(bool);
}
빠르고 더럽습니다.
function getObjName(obj) {
return (wrap={obj}) && eval('for(p in obj){p}') && (wrap=null);
}
언급URL : https://stackoverflow.com/questions/4260308/getting-the-objects-property-name
'programing' 카테고리의 다른 글
Xampp Code Igniter 3 + MariaDB 프로젝트를 github에 푸시하는 이상적인 방법은 무엇입니까? (0) | 2023.07.26 |
---|---|
python 사전에서 속성 설정 (0) | 2023.07.26 |
php를 사용하여 두 날짜 사이에 임의의 날짜를 생성하는 방법은 무엇입니까? (0) | 2023.07.26 |
다국어 데이터베이스 설계를 위한 모범 사례는 무엇입니까? (0) | 2023.07.26 |
표에 날짜 열이 없는 경우 MariaDB에서 최근 30일 레코드 양식 표를 찾는 방법 (0) | 2023.07.26 |