Javascript:如何转换数组?

MEM*_*MEM 7 javascript arrays

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

[{"nomeDominio":"gggg.fa"},{"nomeDominio":"rarar.fa"}]
Run Code Online (Sandbox Code Playgroud)

我们如何将其转换/转换为以下内容:

["gggg.fa","rarar.fa"]
Run Code Online (Sandbox Code Playgroud)

非常感谢,MEM

CMS*_*CMS 9

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

ajax('url', function (response) {
  alert(typeof response);
});
Run Code Online (Sandbox Code Playgroud)

您现在将确定它是a "string"还是Array "object".

如果它是一个字符串,你可以使用JSON.parse@alcuadrado建议的方法,否则你可以简单地使用数组.

几个答案建议使用该for-in语句迭代数组元素,我不鼓励你使用它.

for-in语句应该用于枚举对象属性,迭代 Arrays或类似Array的对象,使用@Ken Redler建议的顺序循环.

你真的应该避免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"]
Run Code Online (Sandbox Code Playgroud)


alc*_*ado 7

这个问题是强烈相关的这一个.

我建议在那里阅读我的答案,因为它会有所帮助; 并且有一点变化,它会起作用:

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

for(var i in responseObject) {
  nombresDeDominio.push(responseObject[i].nomeDominio)
}
Run Code Online (Sandbox Code Playgroud)

Suerte!