2016-03-26 21 views
0

Aşağıdaki json dosyasına sahibim. Amacım, name öğesinin tamamını doğru bir şekilde bulmak ve değerini ad dizisine eklemek. Belirli bir özelliği bulup bir dizeye itin

var data = { 
    "Fruits": [{ 
    "name": "apple", 
    "added_date": "", 
    "expired_date": "" 
    }, { 
    "name": "orange", 
    "added_date": "", 
    "expired_date": "" 
    }, { 
    "name": "strawberry", 
    "added_date": "", 
    "expired_date": "" 
    }, { 
    "name": "banana", 
    "added_date": "", 
    "expired_date": "" 
    }], 
    "Meat": [{ 
    "name": "beef", 
    "added_date": "", 
    "expired_date": "" 
    }, { 
    "name": "chicken", 
    "added_date": "", 
    "expired_date": "" 
    }, { 
    "name": "fish", 
    "added_date": "", 
    "expired_date": "" 
    }, { 
    "name": "pork", 
    "added_date": "", 
    "expired_date": "" 
    }], 
    "Vegetable": [{ 
    "name": "cucumber", 
    "added_date": "", 
    "expired_date": "" 
    }, { 
    "name": "kale", 
    "added_date": "", 
    "expired_date": "" 
    }], 
    "Spice": [{ 
    "name": "cajun", 
    "added_date": "", 
    "expired_date": "" 
    }, { 
    "name": "garlic", 
    "added_date": "", 
    "expired_date": "" 
    }] 
}; 

böyle bir şey ile geldi, ama push fonksiyonu üzerine bana hata vermek. Bu sorunu çözmek için daha iyi bir yolu var mı?

var name = []; 
for (var key in data) { 
    for (var i = 0; i < data[key].length; i++) { 
    console.log(data[key][i].name); 
    name.push(data[key][i].name); 
    } 
} 
console.log(name); 
+0

nedir değerleri hata? – csum

cevap

5

sorun yalnızca dize alır window.name özelliğini geçersiz kılmak için çalışıyoruz küresel kapsamda olduğundan, değişken adı name olduğunu

var data = { 
 
    "Fruits": [{ 
 
    "name": "apple", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }, { 
 
    "name": "orange", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }, { 
 
    "name": "strawberry", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }, { 
 
    "name": "banana", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }], 
 
    "Meat": [{ 
 
    "name": "beef", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }, { 
 
    "name": "chicken", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }, { 
 
    "name": "fish", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }, { 
 
    "name": "pork", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }], 
 
    "Vegetable": [{ 
 
    "name": "cucumber", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }, { 
 
    "name": "kale", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }], 
 
    "Spice": [{ 
 
    "name": "cajun", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }, { 
 
    "name": "garlic", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }] 
 
}; 
 

 
var name = []; 
 
snippet.log('name value:' + name + ':' + typeof name + ':') 
 

 
var names = []; 
 
for (var key in data) { 
 
    for (var i = 0; i < data[key].length; i++) { 
 
    names.push(data[key][i].name); 
 
    } 
 
} 
 
snippet.log(names);
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> 
 
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

+0

Bu elbette doğrudur, fakat asıl soru, OP'nin küresel bağlamda çalıştığı, 'name' nin özel bir anlamla tanımlandığı, bunun sadece bir işlevde yazılması yerine yazılması gereken bir kod yazmasıdır. ince. –

İlgili konular