Javascript:如何转换数组?

时间:2010-08-31 15:08:02

标签: javascript arrays

我有一个javascript var :(这是一个http返回的数据,我不知道它是一个数组还是字符串 - (我们怎么看?) - 更新:使用typeof返回“string”,所以这是一个字符串。

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

我们如何将其转换/转换为类似的内容:

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

非常感谢, MEM

6 个答案:

答案 0 :(得分:9)

您可以通过检查变量的类型来确定是字符串还是已解析的对象,例如:

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

现在,您将确定它是"string"还是数组"object"

如果是字符串,您可以使用JSON.parse方法作为@alcuadrado建议,否则您只需使用该数组。

有几个答案建议在数组元素上使用for-in语句来迭代,我不鼓励你使用它。

for-in语句应该用于枚举对象属性,迭代通过Arrays或类似数组的对象,使用顺序循环作为@Ken雷德勒建议。

为此目的,你应该真的避免使用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"]

答案 1 :(得分:7)

此问题与this one密切相关。

我建议在那里阅读my answer,因为它会有所帮助;如果有一点变化,它就会起作用:

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

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

Suerte!

答案 2 :(得分:1)

假设您的数据总是如此,您可以执行以下操作:

var foo = [{"nomeDominio":"gggg.fa"},{"nomeDominio":"rarar.fa"}];
var newarr = [];
for ( var i=0,j=foo.length;i<j;i++ ) {
    newarr.push( foo[i]['nomeDominio'] );
}

这是一个有效的fiddle

答案 3 :(得分:1)

function transform(array, f) {
    var ret = [];
    $.each(array, function(index) {
        var v = f.call(this, index);
        if(v) {
            ret.push(v);
        }
    });
    return ret;
}

var result = transform(
    [{"nomeDominio":"gggg.fa"},{"nomeDominio":"rarar.fa"}], 
    function() { return this.nomeDominio; }
);

alert(result.toString());

答案 4 :(得分:0)

  

这是一个http返回的数据,我没有   知道它是数组还是字符串

它是JSON,您可以直接在JavaScript中使用它。

如果将其转换为数组,则会丢失关联键/值;你确定这是你想要的吗?

答案 5 :(得分:0)

好的,首先要获得“东西”的类型,使用“typeof”运算符(注意数组的类型是对象,而不是'数组'!):

var a = "string";
var b = 1;
var c = new Array();
alert(typeof(a)); // string
alert(typeof(b)); // number
alert(typeof(c)); // object

要获得关联数组中的值(假设它是1),你可以循环遍历它,如下所示:

var d = [{"nomeDominio":"gggg.fa"},{"nomeDominio":"rarar.fa"}];
d["bob"] = "alice";
d["gary"] = "stephen";

for(var key in d) {
    alert(d[key]);
}