今天遇到了这个问题:
$test = array('red', 'red', 'green', 'red', 'green', 'blue', 'blue', 'red', 'blue');
$test = array_unique($test);
将返回:
Array
(
[0] => red
[2] => green
[5] => blue
)
这是通过$ajax_result['results'] = $test
传递给js脚本的。既然array_unique保留了键,那么我如何在js中执行foreach循环呢?
for(var i = 0; i < response.results.length; i++)
{
//do something
}
它们的键不再是0,1,2,3…*长度,而是0,2,5,因为它们被保留了下来。
如果您不必支持IE8,并且希望保留这些密钥:
var response = {results: {0: 'red', 2: 'green', 5: 'blue'}};
Object.keys(response.results).forEach(function(key) {
console.log(key, response.results[key]);
});
输出:
0 red
2 green
5 blue
如果你不想保留密钥:
$test = array('red', 'red', 'green', 'red', 'green', 'blue', 'blue', 'red', 'blue');
$test = array_values(array_unique($test));
只需使用
for (var i in response.results) {
alert(response.results[i]);
}
假设你有一个对象:
var obj = { 0:"zero", 1:"one" };
for (var i in obj) {
alert(obj[i]);
}