var obj = {
name: "Simon",
age: "20",
clothing: {
style: "simple",
hipster: false
}
}
for(var propt in obj){
console.log(propt + ': ' + obj[propt]);
}Run Code Online (Sandbox Code Playgroud)
变量如何propt表示对象的属性?它不是内置方法或属性.为什么它会出现在对象中的每个属性?
我有一个包含对象和数组的嵌套数据结构.如何提取信息,即访问特定或多个值(或键)?
例如:
var data = {
code: 42,
items: [{
id: 1,
name: 'foo'
}, {
id: 2,
name: 'bar'
}]
};
Run Code Online (Sandbox Code Playgroud)
我怎么能访问name第二项items?
我想遍历一个JSON对象树,但找不到任何库.这似乎并不困难,但感觉就像重新发明轮子一样.
在XML中,有很多教程展示了如何使用DOM遍历XML树:(
我在IE浏览器中特别得到了一些客户端Javascript堆栈溢出问题,这发生在第三方库中,它进行了一些函数调用,并且由于某种原因它们偶尔会因为它的低堆栈限制而在IE中制动.
然后我编写了一个小测试HTML来测试一些浏览器的堆栈大小限制,发现IE8实际上有一个小的堆栈限制,如果与运行在Windows 7操作系统,8Gb RAM的笔记本电脑上的FF 7或Chrome 14相比:
<html>
<body>
<!-- begin Script: -->
<script type="text/javascript">
function doSomething(){
var i = 3200;
doSomethingElse(i);
}
function doSomethingElse(i){
if (i == 0) return -1;
doSomethingElse(i-1);
}
doSomething();
</script>
<!-- END OF PAGE -->
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当值大约为3200时,IE引发堆栈溢出,如果与IE相比,Firefox和Chrome可以处理非常深的递归.
我想知道是否有办法将堆栈溢出异常与在IE或任何其他浏览器中运行时引发它的Javascript函数联系起来,如果它可以在堆栈中为堆栈跟踪提供堆栈中的函数链提出错误.
嗨,我有一个看起来像这样的嵌套对象
var dogTypes = {
GermanShepard {color: "black and white"},
Beagle {color: "brown and white"},
cheuwahwah {color: "green and white"},
poodle: {color: "purple and white"},
}
Run Code Online (Sandbox Code Playgroud)
我试图遍历嵌套对象中的所有属性,我知道如何使用常规对象而不是嵌套对象来执行此操作,因此如果有人可以帮助我,那就太好了。
for (var key in dogTypes) {
console.log(key + " : " + dogTypes[key])
}
Run Code Online (Sandbox Code Playgroud)
这是我打印出来的代码
GreatDane : [object Object]
GermanSheppard : [object Object]
Beagle : [object Object]
BullDog : [object Object]
Run Code Online (Sandbox Code Playgroud)
我将在哪里将颜色属性合并到 for in 循环中,请帮忙!谢谢
我正在使用javascript(在服务器端和客户端)开发Web应用程序.我作为json发送来回数据,我希望能够在另一方面解析它.问题是我内部有几层嵌套对象,所以这就是我被困住的地方.例如,我发送以下数据:
var data = {};
data.title = "My Title";
data.metric = {
fact : "Malicious code detected",
technique : "XSS"
};
data.subject = {
userType : "ADMIN",
userName : "Jack",
clientNumber : "000",
terminal : "192.168.1.1"
};
data.context = {
environment : {
session : "00",
hostname : "mainServer",
sysType : "production"
},
resource : {
wpt : "DIA",
pid : "1024"
}
};
Run Code Online (Sandbox Code Playgroud)
另一方面,当我收到它时,我只想完全遍历此对象,并打印其内容.我在stackoverflow上看到了很多类似的问题,但没有一个有用.这是我到目前为止所做的:
function display(data) {
var resp = "";
var prop = null;
var dataJSON = JSON.parse(data); …Run Code Online (Sandbox Code Playgroud) 我从后端得到一个文件路径列表,它代表一个文件夹结构,如下所示:
paths = ["path/to/file1.doc", "path/to/file2.doc", "foo/bar.doc]
Run Code Online (Sandbox Code Playgroud)
路径的长度是任意的。为了使用文件树组件(angular2-tree-component),我需要将此数据转换为以下格式:
nodes = [
{
"name": "path",
"children": [
{
"name": "to",
"children": [
{"name": "file1.doc"},
{"name": "file2.doc"}
]
}
]
},
{
"name": "foo",
"children": [
{"name": "bar.doc"}
]
}
]
Run Code Online (Sandbox Code Playgroud)
我认为转换数据的最有效方法是
步骤1:
transformToTree(data) {
const tree = {};
function addPathsToTree(paths) {
let map = tree
paths.forEach(function(item) {
map[item] = map[item] || {};
map = map[item];
});
}
data.forEach(function(path) {
let pathPart = path.split('/');
addPathsToTree(pathPart); …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的 javascript 普通对象:{a: {b: 1} }
并且我想将其转换为像这样的点符号字符串a.b = 1
用例:
将对象发送到纯文本环境(例如 cli)或作为 url 参数。
javascript ×8
object ×3
json ×2
loops ×2
nested ×2
angular ×1
arrays ×1
browser ×1
limit ×1
mapping ×1
parsing ×1
properties ×1
stack ×1
typescript ×1