Поиск и установка элемента в двумерном массивеJquery

Программирование на jquery
Ответить
Anonymous
 Поиск и установка элемента в двумерном массиве

Сообщение Anonymous »

Я пытаюсь увеличить счетчик для каждого тега в коллекции списков по мере их обработки.
У меня есть такой объект JSON:

Код: Выделить всё

var jsonListings = [
{
"img":      "2521",
"text":     "Alice",
"tags":     ["structure"]
},{
"img":      "2522",
"text":     "Bob",
"tags":     ["landscape","FRAMED"]
},{
"img":      "2523",
"text":     "Charlie",
"tags":     ["structure","MATTED"]
}
];
Я начинаю свой массив тегов с нескольких нужных мне заранее, поэтому:

Код: Выделить всё

var taglist = new Array(
["ALL",0],
["FRAMED",0],
["MATTED",0]
);
затем я перебираю данные, добавляя новые теги только при необходимости, но всегда перебирая счетчик:

Код: Выделить всё

$.each(jsonListings, function(i,v) {

$.each(v.tags, function(i,val){
if (!taglist.includes(val)){
// taglist.push(val,0);
}
});
});
В идеале мой список тегов будет выглядеть так:

Код: Выделить всё

    ["ALL", 3],
["FRAMED",1],
["MATTED",1],
["structure",2],
["landscape",1]
Но вот строка с комментариями меня поставила в тупик.
(Предыстория: первая версия представляла собой простой массив без счетчиков, поэтому мой список тегов выглядел так:

Код: Выделить всё

    ["ALL","FRAMED","MATTED","structure","landscape"]
и это сработало нормально. Теперь, когда я добавляю счетчик, он очень быстро стал очень сложным.)
Псевдокод будет таким:

Код: Выделить всё

objTagList = ["ALL",0],["FRAMED",0],["MATTED",0]

for each objListing in objJsonListings:
for each arrTag in arrTags:
if objTaglist does NOT include arrTag: // new tag for taglist
objTagList.push([arrTag,1]) // add new tag
else
find arrTag[0] in objTagList: increment arrTag[1] by one
Меня поставила в тупик последняя строка.
Я хочу найти подэлемент в родительском массиве, первый элемент которого [0] равен имеющемуся у меня тегу, чтобы я мог увеличить его второй элемент [1].

Подробнее здесь: https://stackoverflow.com/questions/792 ... oned-array
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»