我有一个对象数组,我想迭代它并打印对象的字段。
控制台日志示例:
2:{id: "15", nombre: "Intrafungol", categoria: "Antifungicos", efecto: "Lucha
contra la Tiña.", efecto_secundario: "Puede ocasionar hipersalivación,
vómitos, diarrea y/o anorexia.", …}
所以这是一个例子。我想打印所有药物的名称。我的代码无效
function process_data(medicines) {
for(var medicine in medicines ) {
console.log(medicine["name"]);
非常感谢!
答案 0 :(得分:1)
for (i in array)
为您提供索引(可枚举属性),而不是数组中的项目。
如果您将其更改为以下内容,则您的示例将起作用:
for (var medicine in medicines ) {
console.log(medicines[medicine].nombre);
}
但是,如果你能够使用array.forEach()
这是很好的,因为你在函数的每个回调中得到了项目,并且根本不必处理索引:
medicines.forEach(function (medicine) {
console.log(medicine.nombre);
});
查看更多: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in
答案 1 :(得分:0)
那个人不会工作,因为在药物对象上没有属性name
。也许你在引用nombre
的地方可以尝试更换属性,看看它是否有效:
function process_data(medicines) {
for(var medicine in medicines ) {
console.log(medicine["nombre"]);
您也可以使用forEach
数组方法
function process_data(medicines) {
medicines.forEach(medicine => console.log(medicine.nombre);
}
答案 2 :(得分:0)
我正在尝试这样做:
function process_data(medicines) {
var html = "";
medicines.forEach(medicine => console.log(medicine.nombre));
for(var medicine in medicines ) {
html += "<div class='card mb-2 col-3 card-medicines'>"
+ "<a data-toggle='modal' href='#modall' style='width: 40%'><img class='card-img-top' src='" + medicine['url'] + "'></a>"
+ "<div class='card-block'>"
+ "<h4 class='card-title'>"
+ medicine.nombre
+"</h4>"
我无法打印药物['url]和medicine.nombre
答案 3 :(得分:0)
使用数组的for
循环更容易:
for (var i=0; i<medicines.length; i++) {
console.log(medicines[i].nombre);
}
答案 4 :(得分:0)
我认为这是用ES6编写的最简单的实现:
const processData = medicines => medicines.forEach(med => {
document
.querySelector('.card')
.insertAdjacentHTML('beforeend', `<h4>${med.nombre}</h4>`);
})
上查看