JavaScript - 키 값 쌍에 대한 루프 내
PHP 같은 걸 할 수 있는 방법이 있을까요?foreach
루프를 설정합니다.PHP:
foreach($data as $key => $value) { }
JS를 요.for..in
입니다만, 「루프」를 것 .as
을 루프normal」)에 「normal」로 「normal」이 됩니다for(var i = 0; i < data.length; i++
=> > 가가가가가가가가?????????????????
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
is is is((((((((마치)target
array
이 경고를 예를 들어, 많은 이 경고를 받게 될 것입니다.indexOf
,push
,pop
등의 개요)
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
loop(for-in 루프가 프로토타입 체인의 속성을 열거하는 차이)
하지 않았다.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 구문은 sugar입니다.
은 .i
은 이 값을 수 입니다.data[i]
(일부러)
어레이용으로 ECMAScript5가 도입되었습니다[MDN](어레이가 있는 것 같습니다).
data.forEach(function(value, index) {
});
MDN 매뉴얼에서는 MDN을 지원하지 않는 브라우저용 심을 제공하고 있습니다.
물론 이것은 오브젝트에 대해서는 기능하지 않지만 오브젝트에 대해 다음과 같은 함수를 만들 수 있습니다.
function forEach(object, callback) {
for(var prop in object) {
if(object.hasOwnProperty(prop)) {
callback(prop, object[prop]);
}
}
}
질문에 jquery로 태그를 지정했으므로 jQuery는 배열 및 객체 구조 모두에 어떤 루프가 있는지 제공합니다[아쉬움].
.for..in
그럴 수 있어요.
for (var key in data)
{
var value = data[key];
}
for (var key in myMap) {
if (myMap.hasOwnProperty(key)) {
console.log("key =" + key);
console.log("value =" + myMap[key]);
}
}
javascript에서는 모든 오브젝트에 메타 정보가 포함된 키와 값의 페어가 포함되어 있습니다.오브젝트의 모든 키와 값의 쌍을 루핑하면 그 쌍도 루핑됩니다.hasOwnProperty()를 사용하면 이러한 필터가 제외됩니다.
오브젝트의 키와 값을 처리하는 방법에는 다음 3가지 옵션이 있습니다.
값 선택:
Object.values(obj).forEach(value => ...);
키 선택:
Object.keys(obj).forEach(key => ...);
키 및 값 선택:
Object.entries(obj).forEach(([key, value]) => ...);
let test = {a: 1, b: 2, c: 3};
Object.entries(test).forEach(([key, value]) => console.log(key, value))
// a 1
// b 2
// c 3
이 질문이 나온 이후 지난 몇 년간 Javascript는 몇 가지 새로운 기능을 추가했습니다.그 중 하나가 객체입니다.엔트리 방식
MDN에서 직접 복사된 코드는 다음과 같습니다.
const object1 = {
a: 'somestring',
b: 42
};
for (let [key, value] of Object.entries(object1)) {
console.log(`${key}: ${value}`);
}
ES6는 Map.protype을 제공합니다.다음과 같이 사용할 수 있는 각(콜백)에 대해
myMap.forEach(function(value, key, myMap) {
// Do something
});
다음과 같이 'for in' 루프를 사용할 수 있습니다.
for (var key in bar) {
var value = bar[key];
}
다음은 가장 근접한 예입니다.
for(var key in data){
var value = data[key];
//your processing here
}
jQuery 를 사용하는 경우 http://api.jquery.com/jQuery.each/ 를 참조하십시오.
Lodash를 사용하는 경우_.forEach
_.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
console.log(key + ": " + value);
});
// => Logs 'a: 1' then 'b: 2' (iteration order is not guaranteed).
왜 단순하지 않은가
var donuts = [
{ type: "Jelly", cost: 1.22 },
{ type: "Chocolate", cost: 2.45 },
{ type: "Cider", cost: 1.59 },
{ type: "Boston Cream", cost: 5.99 }];
donuts.forEach(v => {console.log(v["type"]+ " donuts cost $"+v["cost"]+" each")});
다음 코드를 사용해 보십시오.
<script>
const games = {
"Fifa": "232",
"Minecraft": "476",
"Call of Duty": "182"
};
Object.keys(games).forEach((item, index, array) => {
var msg = item+' '+games[item];
console.log(msg);
});
네, javascript에서도 연관 배열을 사용할 수 있습니다.
var obj =
{
name:'some name',
otherProperty:'prop value',
date: new Date()
};
for(i in obj)
{
var propVal = obj[i]; // i is the key, and obj[i] is the value ...
}
var global = (function() {
return this;
})();
// Pair object, similar to Python
function Pair(key, value) {
this.key = key;
this.value = value;
this.toString = function() {
return "(" + key + ", " + value + ")";
};
}
/**
* as function
* @param {String} dataName A String holding the name of your pairs list.
* @return {Array:Pair} The data list filled
* with all pair objects.
*/
Object.prototype.as = function(dataName) {
var value, key, data;
global[dataName] = data = [];
for (key in this) {
if (this.hasOwnProperty(key)) {
value = this[key];
(function() {
var k = key,
v = value;
data.push(new Pair(k, v));
})();
}
}
return data;
};
var d = {
'one': 1,
'two': 2
};
// Loop on your (key, list) pairs in this way
for (var i = 0, max = d.as("data").length; i < max; i += 1) {
key = data[i].key;
value = data[i].value;
console.log("key: " + key + ", value: " + value);
}
// delete data when u've finished with it.
delete data;
언급URL : https://stackoverflow.com/questions/7241878/for-in-loops-in-javascript-key-value-pairs
'programing' 카테고리의 다른 글
Calendar.getInstance(TimeZone.getTimeZone("UTC")))가 UTC 시간을 반환하지 않습니다. (0) | 2022.11.07 |
---|---|
IntelliJ IDEA의 잘못된 Manifest.mf가 .jar를 만들었습니다. (0) | 2022.11.07 |
Django Queryset에서 필터 이하를 수행하는 방법 (0) | 2022.11.07 |
Java 1.8.0_60, MariaDB v10.0 및 mariadb-java-client 1.2.2, "적절한 드라이버를 찾을 수 없습니다" (0) | 2022.11.07 |
MySQL 위에 MariaDB 5.5 설치 (0) | 2022.11.07 |