programing

Javascript 객체의 첫 번째 속성에 액세스하는 방법은 무엇입니까?

randomtip 2023. 1. 5. 23:57
반응형

Javascript 객체의 첫 번째 속성에 액세스하는 방법은 무엇입니까?

물건의 첫 번째 특성에 접근할 수 있는 우아한 방법은 없을까?

  1. 부동산의 이름을 모르는 경우
  2. 를 .for .. in의 "jQuery$.each

를 들어, 저는 를 for for for이에 for for for for for for for for for for for for for for for for for에 접속해야 합니다.foo1foo1의 :

var example = {
    foo1: { /* stuff1 */},
    foo2: { /* stuff2 */},
    foo3: { /* stuff3 */}
};
var obj = { first: 'someVal' };
obj[Object.keys(obj)[0]]; //returns 'someVal'

Object.values(obj)[0]; // returns 'someVal'

이를 통해 인덱스별로 다른 속성에 액세스할 수도 있습니다.★★★★★★★★★★★★★★★★★★!Object.keys ★★★★★★★★★★★★★★★★★」Object.valuesECMAScript에 따라 반품 순서는 보장되지 않지만 모든 주요 브라우저 구현에 의해 비공식적으로 보증됩니다.자세한 내용은 https://stackoverflow.com/a/23202095를 참조해 주십시오.

번째 반복 후 루프를 시도하고 중단합니다.

for (var prop in object) {
    // object[prop]
    break;
}

도 할 수 있어요.Object.values(example)[0].

Object.keys개체의 속성 배열을 가져옵니다.§:

var example = {
    foo1: { /* stuff1 */},
    foo2: { /* stuff2 */},
    foo3: { /* stuff3 */}
};

var keys = Object.keys(example); // => ["foo1", "foo2", "foo3"] (Note: the order here is not reliable)

문서 및 크로스 브라우저 심은 여기에 기재되어 있습니다.그 사용 예는 여기 있는 다른 답변에서 찾을 수 있습니다.

편집: 알기 쉽게 하기 위해 다른 답변에서 올바르게 기술된 내용을 반영하고 싶습니다. JavaScript 객체의 키 순서가 정의되어 있지 않습니다.

Object.values()사용하여 오브젝트 값에 액세스할 수 있습니다.

var obj = { first: 'someVal' };
Object.values(obj)[0]; // someVal

"첫 번째" 자산은 없습니다.개체 키의 순서가 잘못되었습니다.

를 사용하여 루프 오버를 ,(var foo in bar)어떤 순서로 취득할 수 있습니다만, 향후(특히, 다른 키를 추가 또는 삭제했을 경우) 변경될 수 있습니다.

원라이너 버전:

var val = example[function() { for (var k in example) return k }()];

상위 답변은 전체 어레이를 생성한 다음 목록에서 캡처할 수 있습니다.여기 또 다른 효과적인 지름길이 있습니다.

var obj = { first: 'someVal' };
Object.entries(obj)[0][1] // someVal

Lodash 라이브러리를 사용한 솔루션:

_.find(example) // => {name: "foo1"}

그러나 객체 속성 내부 스토리지 주문은 Javascript VM 구현에 따라 다르기 때문에 보장되지 않습니다.

첫 번째 키를 보다 깔끔하게 입수할 수 있는 방법은 다음과 같습니다.

var object = {
    foo1: 'value of the first property "foo1"',
    foo2: { /* stuff2 */},
    foo3: { /* stuff3 */}
};

let [firstKey] = Object.keys(object)

console.log(firstKey)
console.log(object[firstKey])

어레이 파괴를 선호한다면

const [firstKey] = Object.keys(object);

아니요. MDN에서 정의된 객체 리터럴은 다음과 같습니다.

개체의 속성 이름 및 관련 값 쌍이 0개 이상이고, 중괄호({})로 묶인 목록입니다.

, 또는 수 .forin키워드를 지정합니다.

사용할 수 있는 개체의 첫 번째 키 이름을 가져오려면:

var obj = { first: 'someVal' };
Object.keys(obj)[0]; //returns 'first'

문자열을 반환하여 다음과 같은 항목이 있는 경우 중첩된 개체에 액세스할 수 없습니다.

var obj = { first: { someVal : { id : 1} };아이디입니다.

실제 객체를 가져오려면 다음과 같은 lodash를 사용하는 것이 가장 좋습니다.

obj[_.first(_.keys(obj))].id

첫 번째 키 값을 반환하려면(첫 번째 키 이름을 정확히 모르는 경우)

var obj = { first: 'someVal' };
obj[Object.keys(obj)[0]]; //returns 'someVal'

키 이름만 알고 있는 경우 다음을 사용합니다.

obj.first

또는

obj['first']

이것은 이전에 여기에서 다룬 적이 있습니다.

first의 개념은 오브젝트 속성에는 적용되지 않으며, for...in 루프의 순서는 사양상 보장되지 않지만, 실제로는 크롬(버그 리포트)을 제외하고 신뢰할 수 있는 FIFO입니다.그에 따라 결정을 내리세요.

오브젝트 사용을 권장하지 않습니다.오래된 IE 버전에서는 지원되지 않기 때문에 키를 누릅니다.그러나 꼭 필요한 경우 위의 코드를 사용하여 백 호환성을 보장할 수 있습니다.

if (!Object.keys) {
Object.keys = (function () {
var hasOwnProperty = Object.prototype.hasOwnProperty,
    hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),
    dontEnums = [
      'toString',
      'toLocaleString',
      'valueOf',
      'hasOwnProperty',
      'isPrototypeOf',
      'propertyIsEnumerable',
      'constructor'
    ],
    dontEnumsLength = dontEnums.length;

return function (obj) {
  if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) throw new TypeError('Object.keys called on non-object');

  var result = [];

  for (var prop in obj) {
    if (hasOwnProperty.call(obj, prop)) result.push(prop);
  }

  if (hasDontEnumBug) {
    for (var i=0; i < dontEnumsLength; i++) {
      if (hasOwnProperty.call(obj, dontEnums[i])) result.push(dontEnums[i]);
    }
  }
  return result;
}})()};

기능: Firefox (Gecko) 4 (2.0) Chrome 5 Internet Explorer 9 Opera 12 Safari 5

상세정보 : https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/keys

그러나 첫 번째 솔루션만 필요한 경우 다음과 같은 짧은 솔루션을 준비할 수 있습니다.

var data = {"key1":"123","key2":"456"};
var first = {};
for(key in data){
    if(data.hasOwnProperty(key)){
        first.key = key;
        first.content =  data[key];
        break;
    }
}
console.log(first); // {key:"key",content:"123"}

"개체의 첫 번째 속성"에 액세스해야 하는 경우 논리에 문제가 있을 수 있습니다.개체의 속성 순서는 중요하지 않습니다.

을 보다 할 수 있는 를 걸지 실시할 수 있습니다.Object.keys() ★★★★★★★★★★★★★★★★★」Object.values()그러면 배열이 반환됩니다.

Object.prototype.firstKey = function () {
  for (const k in this) {
    if (Object.prototype.hasOwnProperty.call(this, k)) return k;
  }
  return null;
};

그런 다음 다음과 같이 사용할 수 있습니다.

const obj = {a: 1, b: 2, c: 3}
console.log(obj.firstKey()) //=> 'a'

반드시 첫 번째 키가 반환되는 것은 아닙니다.「 (…in…」루프의 요소 순서를 참조해 주세요.

이 방법으로도 할 수 있습니다.

var example = {
  foo1: { /* stuff1 */},
  foo2: { /* stuff2 */},
  foo3: { /* stuff3 */}
}; 
Object.entries(example)[0][1];

이것은 오래된 질문이지만 대부분의 솔루션에서는 사용자가 업로드할 수 있는 파일이나 유사한 케이스에서 데이터를 시각화하는 경우 등 속성의 이름을 알고 있다고 가정합니다.

이것은 내가 사용하는 간단한 함수이며 변수를 알고 있는 경우 두 경우 모두 작동하며, 그렇지 않은 경우 개체의 첫 번째 속성(알파벳 순으로 정렬됨)이 반환됩니다.

labeld 해서 뽑습니다.key아트리뷰트

const data = [
  { label: "A", value: 10 },
  { label: "B", value: 15 },
  { label: "C", value: 20 },
  { label: "D", value: 25 },
  { label: "E", value: 30 }
]

const keys = ['label', 0, '', null, undefined]

const label = (d, k) => k ? d[k] : Object.values(d)[0]

data.forEach(d => {
  console.log(`first: ${label(d)}, label: ${label(d, keys[0])}`)
})

keys.forEach(k => {
  console.log(`label of ${k}: ${label(data[0], k)}`)
})

다음과 같은 가치의 경우0,'',null , , , , 입니다.undefined는 배열의 첫 번째 요소를 반환합니다.

이것이 나의 해결책이다.

  const dataToSend = {email:'king@gmail.com',password:'12345'};
   const formData = new FormData();
      for (let i = 0; i < Object.keys(dataToSend).length; i++) {
     formData.append(Object.keys(dataToSend)[i], 
         Object.values(dataToSend)[i]);
      }

  console.log(formData);

이걸 하지 않을 이유가 있나요?

> example.map(x => x.name);

(3) ["foo1", "foo2", "foo3"]

키 값을 적절하게 반복하는 기본 구문

const object1 = {
  a: 'somestring',
  b: 42
};

for (const [key, value] of Object.entries(object1)) {
  console.log(`${key}: ${value}`);
}

// expected output:
// "a: somestring"
// "b: 42"

다른 사람들이 지적한 것처럼, 만약 속성의 순서가 중요하다면, 그것들을 물건에 저장하는 것은 좋은 생각이 아니다.대신 대괄호로 묶은 배열을 사용해야 합니다.예.,

var example = [ {/* stuff1 */}, { /* stuff2 */}, { /* stuff3 */}];
var first = example[0];

'foo' 식별자는 손실됩니다.그러나 포함된 개체에 이름 속성을 추가할 수 있습니다.

var example = [ 
  {name: 'foo1', /* stuff1 */},
  {name: 'foo2', /* stuff2 */},
  {name: 'foo3', /* stuff3 */}
];
var whatWasFirst = example[0].name;

'어떤 패턴에 맞는 하나 이상의 속성을 찾는 방법'과 같은 질문에 대한 답을 찾는 사람에게는Object.keys(). 베네카스타의 답변을 확장하려면:

for (const propName of Object.keys(example)) {
  if (propName.startsWith('foo')) {
    console.log(`Found propName ${propName} with value ${example[propName]}`);
    break;
  }
}

언급URL : https://stackoverflow.com/questions/983267/how-to-access-the-first-property-of-a-javascript-object

반응형

'programing' 카테고리의 다른 글

PHP CURL OPT_SSL_VERIFYPEER 무시  (0) 2023.01.05
MySQL - 열의 문자 바꾸기  (0) 2023.01.05
값별 배열 복사  (0) 2023.01.05
문자열에서 판다 데이터 프레임 생성  (0) 2023.01.05
PHP YAML 파서  (0) 2023.01.05