这是我在json_encode
之后从Wordpress数据库获得的jQuery响应:
[{ "id" : "33", "first_name" : "Oleg", "last_name" : "Smith" }]
因为它本质上是多维的,但只有一行,所以你的两端都有方括号。
因此,在尝试解析然后转换为JS数组时,我在SO上找到的所有方法都失败了,例如。
for(var x in parsed){
arr.push(parsed[x]);
}
OR
var arr = $.map(obj, function(el) { return el; });
OR
var arr = Object.keys(obj).map(function(k) { return obj[k] });
OR
for(var i in JsonObj) {
if(JsonObj.hasOwnProperty(i) && !isNaN(+i)) {
array[+i] = JsonObj[i];
}
}
我可以手动删除方括号并继续或我可以手动推送每个项目:
aaData.push(searchObj[0].first_name);
但我不喜欢我的任何解决方案。我还有其他选择吗?
PS。我需要一个JS数组,以便我可以使用[i]
循环。
答案 0 :(得分:2)
您可以执行以下操作将所有值推送到aaData数组:
aaData[0] will give you 33
aaData[1] will give you Oleg, etc
所以,现在你在aaData中有“33”,“Oleg”,“Smith”,你可以通过索引访问:
{{1}}
答案 1 :(得分:1)
听起来你希望能够处理searchObj数组中有多个元素的情况。在这种情况下,您可以循环遍历数组的所有元素并推送它们中的每一个:
for (var i = 0; i < searchObj.length; i++) {
aaData.push(searchObj[i].first_name);
}
当只有一个元素时,只会推送一个元素。
答案 2 :(得分:1)
您可以解析JSON,然后遍历数据,将每个项目插入到集合数组中,如下所示:
public function setPublishedAtAttribute($date){
$this->atributes['published_at'] = Carbon::createFromFormat('Y-m-d', $date);
}
这个也适用于旧浏览器:
var parsedData = JSON.parse(responseData);
parsedData.forEach(function (item) {
arrayCollection.push(item);
}