Javascript: How can I transform an array?

I have this on a javascript var: (it's a http returned data, and I don't know if it's an array or string - (how can we see that?) - Update: using typeof returned "string", so it's a string.

[{"nomeDominio":"gggg.fa"},{"nomeDominio":"rarar.fa"}]

How can we pass/transform that, into something like this:

["gggg.fa","rarar.fa"]

?

Thanks a lot, MEM

7
задан MEM 31 August 2010 в 15:44
поделиться

3 ответа

Этот вопрос тесно связан с этим.

Я бы посоветовал прочитать мой ответ там, так как это действительно поможет; и с небольшой вариацией это просто сработало бы:

var responseString = '[{"nomeDominio":"gggg.fa"},{"nomeDominio":"rarar.fa"}]',
    responseObject = JSON.parse(responseString),
    nombresDeDominio = [];

for(var i in responseObject) {
  nombresDeDominio.push(responseObject[i].nomeDominio)
}

Suerte!

7
ответ дан 6 December 2019 в 10:46
поделиться

Вы можете выяснить, является ли это строкой или уже проанализированным объектом, проверив тип вашей переменной, например:

ajax('url', function (response) {
  alert(typeof response);
});

Теперь вы узнаете, является ли это "строкой" или массив "объект".

Если это строка, вы можете использовать метод JSON.parse, как предлагает @alcuadrado, в противном случае вы можете просто использовать массив.

В нескольких ответах предлагается использовать оператор for-in для итерации по элементам массива, я бы не рекомендовал вам использовать его для этого.

Оператор for-in следует использовать для перечисления по свойствам объекта, для итерации по массивам или массивоподобным объектам, использовать последовательный цикл как @ Кен Редлер предлагает.

Вам действительно следует избегать for-in для этой цели, потому что:

  • Порядок перечисления не гарантируется, свойства нельзя посещать в числовом порядке.
  • Перечисляет также унаследованные свойства.

Вы также можете использовать метод Array.prototype.map для удовлетворения ваших требований:

var response = [{"nomeDominio":"gggg.fa"},{"nomeDominio":"rarar.fa"}];
var array = response.map(function (item) { return item.nomeDominio; });
// ["gggg.fa", "rarar.fa"]
9
ответ дан 6 December 2019 в 10:46
поделиться

это http возвращаемые данные, а я нет узнать, является ли это массивом или строкой

Это JSON, и вы можете использовать его непосредственно в JavaScript.

Если вы преобразуете его в свой массив, вы потеряете ключ/значение ассоциации; ты уверен, что это то, что ты хочешь?

0
ответ дан 6 December 2019 в 10:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: