[英]Javascript: How can I transform an array?
我有一个javascript var :(这是一个http返回的数据,我不知道它是一个数组还是字符串 - (我们怎么看?) - 更新:使用typeof返回“string”,所以它是一个字符串。
[{"nomeDominio":"gggg.fa"},{"nomeDominio":"rarar.fa"}]
我们如何将其转换/转换为以下内容:
["gggg.fa","rarar.fa"]
?
非常感谢,MEM
您可以通过检查变量的类型来确定是字符串还是已解析的对象,例如:
ajax('url', function (response) {
alert(typeof response);
});
您现在将弄清楚它是"string"
还是数组"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"]
假设您的数据总是如此,您可以执行以下操作:
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'] );
}
这是一个工作小提琴 。
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());
好的,首先要获取“thing”的类型,使用“typeof”运算符(注意数组的类型是一个对象 ,而不是'array'!):
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]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.