如果我有一个对象的引用:
var test = {};
Run Code Online (Sandbox Code Playgroud)
可能(但不是立即)有嵌套对象,如:
{level1: {level2: {level3: "level3"}}};
Run Code Online (Sandbox Code Playgroud)
在最深层嵌套的对象中测试密钥是否存在的最佳方法是什么?
alert(test.level1);收益率undefined,但alert(test.level1.level2.level3);失败了.
我现在正在做这样的事情:
if(test.level1 && test.level1.level2 && test.level1.level2.level3) {
alert(test.level1.level2.level3);
}
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有更好的方法.
我有一个用例,其中来自后端的JSON响应如下:
[
{
"name": "cab",
"child": [
{
"name": "def",
"child": [
{
"name": "ghi",
"power": "0.00",
"isParent": false
}
],
"power": "1.23",
"isParent": true
}
],
"power": "1.1",
"isParent": true
},
{
"name": "hhi",
"child": [
{
"name": "hhi2",
"child": [
{
"name": "hhi3",
"power": "0.00",
"isParent": false
}
],
"power": "1.23",
"isParent": true
}
],
"power": "1.1",
"isParent": true
}
]
Run Code Online (Sandbox Code Playgroud)
我需要删除所有具有幂== 0的对象.在简单的数组集合上使用过滤器很容易,但是可能存在任何n个子节点中可能包含n个子节点的情况.
提前致谢!
有一个对象数组(489 个对象)。一个对象有一个键,它有另一个对象(子对象)。子对象的数量是不确定的。
我也创建了一个小提琴。请找到以下搜索功能:
function getObjects(obj, key, val) {
var objects = [];
for (var i in obj) {
if (!obj.hasOwnProperty(i)) continue;
if (typeof obj[i] == 'object') {
parent = obj;
objects = objects.concat(getObjects(obj[i], key, val));
} else {
if(obj[i].toString().toLowerCase().indexOf(val.toString().toLowerCase()) > -1) {
objects.push(obj);
}
}
}
return objects;
}
Run Code Online (Sandbox Code Playgroud)
在这里,我想在包括嵌套对象 ( asset_info)的对象数组中搜索搜索字符串。没有getObjects使用以下功能的搜索工作正常。
this.data.filter(function(row){
var flag;
for(var prop in (columns.length > 0 ? columns : row)){
flag = false;
flag = row[columns.length > 0 ? columns[prop] …Run Code Online (Sandbox Code Playgroud) 如何检查深度嵌套对象是否包含值?我想检查给定的对象是否包含例如包含“where”的属性值:
let data = {
name: 'Somebody',
address: {
city: 'somewhere'
},
tags: [{
id: 5
name: 'new'
}]
}
check(data, 'where') // should be true
Run Code Online (Sandbox Code Playgroud) 我目前在json对象中进行深度搜索时遇到问题,尽管我认为这个问题一定已经解决了,但到目前为止我找不到任何真正有用的东西(而且我实际上也发现了很多东西,这个线程。也许我今天看代码已经太久了,但是并没有真正帮助我)
基本上我想要的很简单。我有一个JSON-Object,里面充满了对象。我想要的是一个函数,该函数返回包含所有包含给定键值对的所有对象的数组。我做了这个功能来返回第一个发现的对象,它工作得很好
deepSearch: function(Obj, Key, Value){
var returned = [];
var result = false;
var searchObj = function(_Obj, _Key, _Value){
if(_Obj[_Key]===_Value){
return _Obj;
} else {
return false;
}
}
result = searchObj(Obj, Key, Value);
$.each(Obj, function(key, value){
if(typeof(Obj[key]) === 'object' && Obj[key]!== null && !result)
result = customGeneralFunctions.objects.deepSearch(Obj[key], Key, Value);
if(result) return result;
});
return result;
}
Run Code Online (Sandbox Code Playgroud)
现在,我想对其进行更改,以返回包含该对所有对象的数组。我已经尝试了一段时间了,我认为这不会是一个太大的改变,但我只是无法解决这个问题。也许有人对我有帮助。预先感谢和
克里斯问候