嘿,大家好抱歉你的时间,但我遇到了一个奇怪的情况。我有一个数据库,我存储带有名称的坐标(php& mysql)。当有人搜索某个PHP脚本运行的东西并将查询保存在3个不同的变量中时,它应该是一个数组类型。然后我使用JavaScript将这些php数组转换为JavaScript数组。坐标是好的,但是当我尝试使用split()函数时,名称是字符串类型,它会给出错误,因为它是一个数组(我在搜索后理解)。另一个奇怪的是当我在console.log中输入字符串的类型时,但是当我查看源代码时,它显示为数组。
var lon = <?php echo '["' . implode('", "', $lon) . '"]' ?>;
var lat = <?php echo '["' . implode('", "', $lat) . '"]' ?>;
var name = <?php echo '["' . implode('", "', $name) . '"]' ?>;
源选项卡(chrome)中的输出
var lon = ["39.070200", "39.072365", "39.064469"];
var lat = ["21.018064", "21.017744", "21.000059"];
var name = ["Saint Dimitrios", "Saint Charalampos", "Saint Kosmas"];
然后是控制台
console.log(lon);
console.log(typeof lon);
console.log( typeof name);
控制台中的实际输出
["21.018064", "21.017744", "21.000059"] //which when I click it identifies it as an array
object
string
php脚本中的声明
$lon = [];
$lat = [];
$name = [];
和抓取
while ($row = mysqli_fetch_array($query)) {
$name[] = $row['name'];
$lon[] = $row['lon'];
$lat[] = $row['lat'];
}
答案 0 :(得分:-1)
在JavaScript数组中,对象的键为数字。
尝试在控制台arr = new Array
中创建,然后调用typeof(arr)
以查看您在vanilla JavaScript环境中新创建的数组也是一个对象。
小心!在JavaScript length
中创建新数组时,会自动添加属性。因此,如果您尝试使用foreach
循环记录数组中的每个元素,您将获得一个为数组长度保留的属性。
arr = [1,2,3]
arr.forEach( function(key,i,arr) {
console.log(key)
})
//output
1
2
3
undefined
尝试split()
数组不是一个选项,因为此函数接受字符串值并将其分解为具有已定义divider ex的数组。
'1,2,3'.split(',')
//result
["1", "2", "3"]
P.S。 JS中的函数也是对象。所以基本上你可以做这样的事情:
function myFunc() {
alert('Hello World');
};
myFunc.myProperty = '123';
现在您可以像往常一样使用myFunc()
调用您的函数,并使用console.log(myFunc.myProperty)