Я пытаюсь сделать следующее: я создаю массив, содержащий список URL-адресов, исходя из выбранных вами электронных писем и отпадает. Я хочу сортировать эти URL-адреса поставщика в многомерном массиве. Я искал и пробовать разные подходы, но не могу заставить его работать ...push массив для многомерного массива
Я хочу создать многомерный массив, который выглядит как providers[z][y]
где [z]
содержит список провайдеров, где письма приходят от и [y]
является массив, содержащий список URL-адресов от provider[z]
.
Я попытался объявить поставщиков массива несколькими способами: var providers = [ [], [], [] ];
(также добавлены дополнительные кронштейны просто чтобы быть уверенным, там, где достаточно для всех URL в списке), var providers = [];
, var providers = {};
и еще несколько вариаций.
Код я создал, чтобы отсортировать их выглядит следующим образом:
for (var y = 0; y < urlarray.length; y++) {
var pos1;
provider = urlarray[y].split(".")[1];
if (providers.indexOf(provider) === -1) {
providers.push(provider);
}
pos1 = providers.indexOf(provider);
providers[pos1] = providers[pos1] || []; // should add an array???
providers[pos1].push(urlarray[y]);
}
код, кажется, останавливается после толчка, так как поставщики массива [0] [0] не определено. Thunderbird, похоже, не добавляет новый массив y с providers[pos1] = providers[pos1] || [];
.
Как я могу заставить этот код работать, поэтому provider[z][y]
содержит URL-адреса от provider[z]
?
И как второй вопрос, если я хочу получить самый большой массив [y], это единственный способ сделать это, чтобы использовать оператор for
для подсчета всех объектов и сравнения для одного поставщика, который является наибольшим числом, или есть более короткий способ сделать это? Пример, как я хотел бы сделать это:
var biggestarray = 0;
for (var a = 0; a < providers.length; a++) {
var counter = 0;
for (var b = 0; b < 99; b++) { // kept it much bigger then needed
if (provider[a][b] != undefined) {
counter = b + 1;
} else break;
}
if (biggestarray < counter) {
biggestarray = counter;
}
}
Есть еще один способ, чтобы сделать b
пробег до длины provider[a][b]
вместо вышеуказанного раствора, который работает в 99 раз или до перерыва?
Надеется, что вы можете получить меня на правильном пути снова, сходить с умом от этого не работает, как я хочу;)
Спасибо заранее.
Greet ProphecyNL.
у вас есть некоторые примеры ваших данных? –
Да, я передаю все выбранные письма и сохраняю привязки, которые я ищу для массива 'urlarray', который выглядит как' var urlarray = ['url1', 'url2' и т. Д.] '. Я хочу получить к ним доступ, например, «провайдеры [провайдер] [url]», если это возможно. – ProphecyNL
спасибо, но вы не можете разделить 'url1'. похоже ли это на 'example.com'? –