- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是 JSON,具体问题有注释 //does not get parsed current
var oarsObject = [{
"coordinateReferenceSystem": "26782,15851 <-- not in a value",
"positionReferenceType": "geogWgs84",
"geogWgs84": {
"latitude": {
"value": 0.50018514607964015
},
"longitude": {
"value": -1.587237735514361
},
"height": {
"value": 0.0
}
}
}, {
"coordinateReferenceSystem": {
"value": "26782,15851 <-- was in a value"
},
"positionReferenceType": {
"value": "geogWgs84"
},
"geogWgs84": {
"latitude": {
"value": 0.5001841257180204
},
"longitude": {
"value": -1.5869069927615211
},
"height": {
"value": 0.0
}
}
}, {
"coordinateReferenceSystem": "26782,15851",
"positionReferenceType": "geogWgs84",
"geogWgs84": {
"latitude": {
"value": 0.49997645018241949
},
"longitude": {
"value": -1.5869078356348387
},
"height": {
"value": 0.0
}
}
}, {
"coordinateReferenceSystem": "26782,15851",
"positionReferenceType": "geogWgs84",
"geogWgs84": {
"latitude": {
"value": 0.4999774704207946
},
"longitude": {
"value": -1.5872385394554729
},
"height": {
"value": 0.0
}
},
"nest": {
"level_1": {
"child_1": {
"value": "child_1 <-- level 1",
"gchild_1": {"value": "gchild_1 <-- level 2"} // doesn't get parsed currently
},
"child_2": {
"gchild_1": {
"value": "gchild_1 <-- level 2"
}
},
"child_3": {
"gchild_2": {
"ggchild_1": {
"value": "ggchild_1 <-- level 3"
}
}
}
}
}
}];
我认为递归运行得很好,但随后出现了上面的边缘情况,即在存在“值”属性的对象中给出了附加属性。我有几个选择,我可以以不同的方式输出 JSON,或者我可以尝试考虑这些边缘情况,这对我来说似乎更具可扩展性。这是我现在迭代和递归的方式 -
function propertyTest(currentObject) {
for (var property in currentObject) {
if (currentObject[property].hasOwnProperty('value')) {
// if the "value" shoe fits
$('#method1').append(property + ', ' + currentObject[property].value + '<br />');
} else if (typeof currentObject[property] === "object") {
// recurses when needed
propertyTest(currentObject[property]);
} else {
// spits out "valueless" info
$('#method1').append(property + ' ' + currentObject[property] + '<br />');
}
}
}
附加到 div 只是一种方便输出测试的方法。代码可能没有现在应该的那么整洁,但测试后我会清理它。
问题 - 如何正确递归/迭代以便检索这些边缘情况值?任何建议或帮助将不胜感激!
最佳答案
你可以使用类似的东西
function propertyTest(currentObject) {
for (var property in currentObject) {
if (currentObject[property].hasOwnProperty('value')) {
$('#method1').append(property + ', ' + currentObject[property].value + '<br />');
}
if (typeof currentObject[property] === "object") {
propertyTest(currentObject[property]);
} else if(property != 'value') {
$('#method1').append(property + ' ' + currentObject[property] + '<br />');
}
}
}
我将其简化为:
function propertyTest(currentObject, key) {
for (var property in currentObject) {
if (typeof currentObject[property] === "object") {
propertyTest(currentObject[property], property);
} else {
$('#method1').append(
(property=='value' && key ? key+',' : property)
+ ' ' + currentObject[property] + '<br />'
);
}
}
}
关于使用 hasOwnProperty 的 JavaScript/JSON 递归逻辑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23200667/
对版主的澄清由于一些版主在扫描问题时速度有点快,我必须强调我不是在问为什么要使用 Object.prototype.hasOwnProperty.call 而不是 myObject.hasOwnPro
代码一: obj.hasOwnProperty(prop); 代码二: const hasOwnProperty = Object.prototype; hasOwnProperty.call(obj
这个问题在这里已经有了答案: Why use Object.prototype.hasOwnProperty.call(myObj, prop) instead of myObj.hasOwnPro
也许这是一个新手问题,但我找不到或想不出解释。 启动 Node.js 控制台,然后: > global.hasOwnProperty === hasOwnProperty true 那为什么 > gl
在eslint规则中guard-for-in ,直接使用for in是不正确的。好的做法是 for (key in foo) { if (Object.prototype.hasOwnProp
如果我理解正确的话,JavaScript 中的每个对象都继承自 Object 原型(prototype),这意味着 JavaScript 中的每个对象都可以通过其原型(prototype)链访问 ha
我正在尝试让我的某些类型具有某种多重“继承”,如下所示: UIControls.ClickableMesh.prototype = Object.create(THREE.Mesh.prototype
我试图发现一个对象是否具有某些属性并且我在使用 hasOwnProperty 方法时遇到了问题。 我在数组上使用该方法(我知道文档说明了一个字符串)。 以下行返回 true: { "a": 1, "b
谁能解释一下空对象上调用的 hasOwnProperty 的作用?为什么要使用它? __hasProp = {}.hasOwnProperty 我在开始使用 coffescript 进行开发时发现了这
我想使用ES6代理来捕获以下常见代码: for (let key in trapped) { if (!Object.prototype.hasOwnProperty.call(obj, ke
使用 angularjs 和 firebase 编写一个函数,该函数应该检查是否可以在数据库中找到 currentUser。目前“attendings”属性仅包含一个用户,即“Peter Pan” 服
我有一个非常简单的问题。访问对象的属性(例如object[property])和属性的数量是否有任何性能关系?是否存在一些内部循环或其他问题,关于 hasOwnProperty - 任何循环或只是像
我试图理解为什么当我调用下面的函数时结果是“否”,因为属性 c 应该存在。有谁知道为什么?谢谢!!! var letters = function() { this.a = 5; th
在 Javascript 中查找散列中的所有值我看到了以下代码: var myHash = {}; myHash['one'] = 1; myHash['two'] = 2; for (var key
我有以下数据: trace = { "name":"foo", "dataref": { "xdata":"n", "ydata":"m" } }; 我想检查对象是否具有
通过某些值,hasOwnProperty调用将引发错误。 让我们检查以下代码 null.hasOwnProperty('bar') //error undefined.hasOwnProperty('
为什么是真的?对象中的方法foo怎么写? Object.prototype.foo = function(obj) { for(var i in obj) this[i] = obj[i];
这个问题在这里已经有了答案: JavaScript object detection: dot syntax versus 'in' keyword (5 个答案) 关闭 7 年前。 假设有一个对象
问题陈述: 如果对象具有与 JavaScript 预定义的 方法 相同的 property 名称。它无法执行并给出以下错误。 Uncaught TypeError: obj.hasOwnPropert
为什么此函数返回“No Contact”而不是“Akira”? function lookUpProfile(firstName, prop){ for(i=0;i
我是一名优秀的程序员,十分优秀!