var entityName = "",
arrTerms = [],
outputTemplate = '{"%entityName":[%terms]}',
h = {
"Division":
{
"oddTerms":
[
{
"entity": "Sunshine",
"Sunshine": [
{
"count": 2,
"entity": "Dodge"
},
{
"count": 1,
"entity": "Dodge Avenger"
},
]
}
]
}
};
for (var i = 0; i < h.Division.oddTerms.length; i++)
{
entityName=h.Division.oddTerms[i].entity; // "Sunshine"
terms = h.Division.oddTerms[i][entityName];
for (var j = 0; j < terms.length; j++) {
arrTerms.push('"' + terms[j].entity + '"');
}
}
// This will give you '{"Sunshine":["Dodge","Dodge Avenger"]}':
console.log(outputTemplate.replace('%entityName', entityName).replace('%terms', arrTerms.join(",")));
편집 : 그냥 좀 더 이것에
합니다.
JS와 객체 및 배열 "리터럴"을 사용하는 데 익숙하지 않은 경우 JSON이 약간 혼동을 일으킬 수 있습니다. JS에서는 여러 가지 방법으로 객체와 배열을 정의 할 수 있지만, 가장 쉬운 방법은 많은 개발자가이 리터럴을 사용하는 것입니다.
var myObj = {
"some prop":"some value",
"anotherProp":"another value"
}
여러 가지 방법으로 myObj
의 멤버를 찾아 볼 수 있습니다 :
myObj.anotherProp
// "다른 값"
myObj["some prop"]
// 당신이 여기
는 객체의 예 속성 이름에 공백이있는 경우이 양식을 사용하십시오.
배열 내용을 반복 할 때 다음을 사용하십시오. 두 번째 형식. 예를 들어,이 작동하지 않습니다
for (var strPropName in myObj) {
console.log(myObj.strPropName); // This won't work!
}
를 대신, 당신이해야 루프를이 같은 속성을 통해 :
for (var strPropName in myObj) {
if (myObj.hasOwnProperty(strPropName)) {
console.log(myObj[strPropName]);
}
}
if
블록은 선택 사항이지만, 당신은 당신이 경우 항상 잠재적 인 문제를 피할 수 있습니다 이것을 당신의 코드에 포함 시키십시오. 일부 유효성 검사기에서도 필요합니다. 당신은 숫자 인덱스와이 액세스
var myArray = ["some value", "anotherValue"];
:
myArray[0] // "some value"
myArray[1] // "anotherValue"
myArray[2] // undefined
그리고 당신이 할 수있는 루프 그들을 통해 :
이제
, 여기에 배열의 예
for (var index = 0; index < myArray.length; index++) {
console.log(myArray[index]);
}
당신 배열 안에 객체를 중첩시킬 수 있습니다.
myArray = [{},{},{}];
그리고 당신이 할 수있는 객체 내부의 중첩 배열 :
myObject = {"arr1":[], "arr2":[], "arr3":[]}
당신이 당신의 루프 할 마지막 줄을 기대하고 무엇입니까? – Andrew
예를 들어 경고 할 것입니다. Bt 엔티티 닷지와 닷지 보너스의 가치를 알려야합니다 ... – user1371896
두 번째 마지막 행의 값 햇빛이 있고 마지막 행의 값 햇빛이 추가되어야합니다. 엔티티 이름을 가져옵니다. 문자열에 둘 이상의 요소가 포함되어 있으면 jst 햇빛보다 많은 값을 갖습니다.이 코드는 사용하려고합니다. – user1371896