如何在php中使用arrayunique后在js中循环数组


how to loop over array in js after using array_unique in php

今天遇到了这个问题:

$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]);
}