#javascript #jquery #json #function #console
#javascript #jquery #json #функция #консоль
Вопрос:
Я извлекаю данные JSON из локального файла. Если данные есть true
, то я хочу добавить их в div, если нет, то они вообще не должны отображаться.
Я могу видеть true
данные в console.log
, так что теперь остается добавить их, но я столкнулся с проблемой с моим return
оператором (см. Код ниже). Есть мысли?
Фрагмент JS:
import testjson from './test.json';
function loadTopCourses() {
let isTop = testjson.d.results.filter(x => x.TopTrainingCourse === true) {
return {
"Title": val.Title
}
};
console.log(isTop)
let showTopTitles = isTop;
for (var i = 0; i < showTopTitles.length; i ) {
let li = $("<li></li>");
$(li).append(showTopTitles[i].Title);
$(".top-training-ul").append(li)
};
} // ------------------ loadTopCourses
loadTopCourses();
Фрагмент JSON:
{
"d": {
"results": [
{
...
"Id": 1,
"Title": "Training 1",
"Category": "Enter Choice #1",
"Topic": "Enter Choice #1",
"Description": "My Test description",
"TopTrainingCourse": false, // ------------ //
"ID": 1,
"Modified": "2019-03-05T20:13:46Z",
"Created": "2019-03-05T20:13:36Z"
},
...
...
"FileSystemObjectType": 0,
"Id": 2,
"Title": "Training 2",
"Category": "Enter Choice #2",
"Topic": "Enter Choice #1",
"Description": null,
"TopTrainingCourse": true, // ------------- //
"ID": 2,
"Modified": "2019-03-05T20:14:00Z",
"Created": "2019-03-05T20:13:53Z"
},
...
...
console.log:
(7) [{…}, {…}, {…}, {…}, {…}, {…}, {…}] // ------ correct # of true values
0: {__metadata: {…}, FirstUniqueAncestorSecurableObject: {…}, RoleAssignments: {…}, AttachmentFiles: {…}, ContentType: {…}, …}
1:
ID: 4
Id: 4
Modified: "2019-03-05T22:33:04Z"
OData__UIVersionString: "1.0"
ParentList: {__deferred: {…}}
RoleAssignments: {__deferred: {…}}
Title: "Training 4"
TopTrainingCourse: true // ------------- //
Topic: "Enter Choice #1"
Комментарии:
1.
let li = $("<li></li>"); $(li).append(showTopTitles[i].Title);
вам не кажется, что вашli
файл закрыт до того, как вы добавите к нему данные. Вы должны закрыть свой</li>
после добавления к нему данных .. только тогда это будет похоже на это<li>test data</li>
2. пусть li = $(«<li></li>»); Эта строка кажется неправильной, в jquery вы должны поместить селектор $ («li»). Но в вашем случае попробуйте что-то более похожее в вашем цикле for; пусть li = «<li>» showTopTitles[i]. Заголовок «</li>»; а затем добавляем его с помощью $(«.top-training-ul»).append(li)
3. @nircraft @Nico Мой код сработал для меня, но да, он выглядел довольно неуклюжим. Я обновил его, так что
append
теперь он находится на одной строке.
Ответ №1:
Вы можете map
преобразовать отфильтрованные результаты в новый массив нужной вам формы:
let isTop = testjson.d.results.filter(x => x.TopTrainingCourse === true)
.map(x => { return { Title: x.Title } });