#javascript #jquery #json #for-loop
#javascript #jquery #json #для цикла
Вопрос:
Например:
{
"data": [
{
"name": "grape",
"fruit": false
},
{
"name": "orange",
"fruit": true
}
]
}
Я перебираю массив и помещаю их в DOM с помощью этого:
for (var i=0; i < data.length; i ) {
var item = '<li>' data[i].name '</li>';
$('#list').append(item)
}
Что я хочу сделать, так это для каждого объекта в массиве, для которого установлено fruit
значение true
, поместить is a fruit
в DOM, и наоборот.
Как я могу это сделать?
Комментарии:
1. Возможно, с помощью
if
инструкции?2. » поместить фрукт в DOM » куда?
3. Я пробовал это как снаружи, так и внутри
for
цикла, и у меня это не работает.4. @Taplar в переменной item рядом с именем.
Ответ №1:
Есть много способов сделать это, но в основном это суть:
// Initializing the data
const data = {
data: [{
"name": "grape",
"fruit": false
},
{
"name": "orange",
"fruit": true
}
]
}
// Getting the ul element
const ul = document.getElementById("list")
// Looping through the data array
data.data.forEach((item) => {
// creating the listItem and assigning the text node
const listItem = document.createElement('li')
item.fruit ?
listItem.appendChild(document.createTextNode("The fruit " item.name " is a fruit")) :
listItem.appendChild(document.createTextNode("The fruit " item.name " is not a fruit"));
ul.appendChild(listItem)
})
<div>
<h1>
Fruit checker
</h1>
<ul id="list"></ul>
</div>
Ответ №2:
for (var i=0; i < data.length; i ) {
var fruitBool = data.fruit ? " is a fruit" : " is not a fruit";
var item = '<li>' data[i].name fruitBool '</li>';
$('#list').append(item)
}
Комментарии:
1.
fruitBool
Это каламбур? Если да, то мне это нравится!
Ответ №3:
data.forEach(function(element){
var item = '<li>' element.name (element.fruit ? ' is a fruit' : '') '</li>';
$('#list').append(item);
})
Вы можете использовать троичный код для добавления необязательного текста, если значение равно true.
Ответ №4:
Вы можете использовать литералы шаблона. Во-вторых, для доступа data
вам нужно сначала получить доступ к объекту.
let obj = {
"data": [{
"name": "grape",
"fruit": false
},
{
"name": "orange",
"fruit": true
}
]
}
let str = '';
let dt = obj.data;
for (var i = 0; i < dt.length; i ) {
str = `<li>${dt[i].name}</li>`
}
document.getElementById('list').innerHTML = str
<ul id='list'></ul>
Комментарии:
1. в чем причина понижения?