[javascript] JavaScript의 For..In 루프-키 값 쌍
foreach
JavaScript에서 PHP 루프 와 같은 것을 수행 할 수있는 방법이 있는지 궁금합니다 . 내가 찾고있는 기능은 다음 PHP 스 니펫과 같습니다.
foreach($data as $key => $value) { }
JS for..in
루프를 보고 있었지만를 지정할 방법이없는 것 같습니다 as
. ‘정상’for 루프 ( for(var i = 0; i < data.length; i++
) 로이 작업을 수행 하면 키 => 값 쌍을 가져 오는 방법이 있습니까?
답변
ES6를 기본적으로 또는 Babel (js 컴파일러) 과 함께 사용할 수있는 경우 다음을 수행 할 수 있습니다.
const test = {a: 1, b: 2, c: 3};
for (const [key, value] of Object.entries(test)) {
console.log(key, value);
}
이 출력을 인쇄합니다 :
a 1
b 2
c 3
이 Object.entries()
메소드는 루프에서 [key, value]
제공 한 것과 동일한 순서로 주어진 객체 자체의 열거 가능한 속성 쌍 의 배열을 반환합니다 (차이 루프는 프로토 타입 체인의 속성도 열거한다는 점이 다릅니다) .for...in
- Object.entries 문서
- 용의 문서
- 할당 문서 정리
- 속성 문서 의 열거 및 소유권
그것이 도움이되기를 바랍니다! =)
답변
for (var k in target){
if (target.hasOwnProperty(k)) {
alert("Key is " + k + ", value is " + target[k]);
}
}
hasOwnProperty
target
프로토 타입에서 상속하지 않고 해당 속성이 실제로 있는지 확인하는 데 사용됩니다 . 조금 더 간단합니다 :
for (var k in target){
if (typeof target[k] !== 'function') {
alert("Key is " + k + ", value is" + target[k]);
}
}
그것은 단지 확인 k
하는 방법 아닌 (것처럼 target
입니다 array
당신이 방법을 많이 얻을 것이다는, 예를 들어, 경고 indexOf
, push
, pop
, 등.)
답변
아무도 Object.keys
언급하지 않았으므로 언급하겠습니다.
Object.keys(obj).forEach(function (key) {
// do something with obj[key]
});
답변
…에서 당신을 위해 일할 것입니다.
for( var key in obj ) {
var value = obj[key];
}
최신 JavaScript에서는 다음을 수행 할 수도 있습니다.
for ( const [key,value] of Object.entries( obj ) ) {
}
답변
var obj = {...};
for (var key in obj) {
var value = obj[key];
}
PHP 문법은 설탕 일뿐입니다.
답변
나는 그것이 i
열쇠 라는 것을 알고 가치를 통해 얻을 수 있다고 가정합니다 data[i]
(그리고 바로 가기를 원합니다).
ECMAScript5는 배열에 forEach
[MDN] 을 도입 했습니다 (배열이있는 것 같습니다).
data.forEach(function(value, index) {
});
MDN 설명서는이를 지원하지 않는 브라우저를위한 shim을 제공합니다.
물론 이것은 객체에는 작동하지 않지만 비슷한 기능을 만들 수 있습니다.
function forEach(object, callback) {
for(var prop in object) {
if(object.hasOwnProperty(prop)) {
callback(prop, object[prop]);
}
}
}
질문에 태그를 지정 했으므로 jqueryjQuery는 배열과 객체 구조를 모두 반복 하는 $.each
[docs] 를 제공합니다 .
답변
당신은 for..in
그것을 위해 사용할 수 있습니다 .
for (var key in data)
{
var value = data[key];
}