- 主题:求教一个让我莫名其妙的问题,javascript
我用D3准备做一个可视化工具,读的文件是json格式,结果读完以后就怎么也没法调用这个数组的了(比如.length出来就是0),到底是哪里不对??求教,感激不尽
代码不多很简单:
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script type="text/javascript">
var data_name = new Array();
var data_number = new Array();
d3.json("migrant.json", function(error,root){
if (error)
console.error(error)
for (country in root) {
data_name[country] = root[country]["Name"]
data_number[country] = root[country]["Number"]
}
});
//data_name是一个字符串数组,如["ABC","DEF","GHI"]
console.log(data_name.length); //读出来是0,但是在浏览器console执行结果是对的
data_length = data_name.length;
console.log(data_length); //上面两句读出来也是0,但是在浏览器console执行结果是对的
</script>
--
FROM 96.50.77.*
async 没搞懂,使用数据的东西全部要在数据获取完毕之后,要在 d3.json cb 里面
代码风格急需大修,你这写的不叫js
【 在 Kenpeng (知足) 的大作中提到: 】
: 我用D3准备做一个可视化工具,读的文件是json格式,结果读完以后就怎么也没法调用这个数组的了(比如.length出来就是0),到底是哪里不对??求教,感激不尽
: 代码不多很简单:
: <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
: ...................
--
FROM 180.173.112.*
typeof一下看看是不是string
--
FROM 180.213.74.*
代码风格咋了?
【 在 XeCycle (据说是小 X) 的大作中提到: 】
: async 没搞懂,使用数据的东西全部要在数据获取完毕之后,要在 d3.json cb 里面
: 代码风格急需大修,你这写的不叫js
--
FROM 219.134.109.*
new Array() 正常 js 才不这么写,一定要预留一个也是 []
for (prop in obj) 要用到 obj 上面但是下面又把 prop 放到 array 上面,
无法区分到底是 array 还是 object
一般来说 array 就用 map filter reduce,object 就 Object.keys
再 map filter reduce
兼容老实现就加 polyfill
不准 polyfill 的话改投 underscore lodash
profile 出来是性能瓶颈的部分再改用循环
所以说还不能正常工作的代码就不应该这样写循环
【 在 blyw (勇往直前) 的大作中提到: 】
: 代码风格咋了?
--
FROM 180.173.112.*