Art*_*mat 1 javascript knockout.js lodash
我在 javascript 中有一组复杂的对象和数组,例如:
var array = [
{ "simpleProp": "some value" },
{ "booleanProp": false },
{
"arrayProp": [
{ "prop1": "value1" },
{
"prop2": {
"prop22": "value22",
"prop23": "value23"
}
},
{ "prop3": "value3" },
{ "booleanProp": true }
]
}
];
Run Code Online (Sandbox Code Playgroud)
我必须知道我的数组中是否有一个具有定义值的属性,例如:
function some(array, property, value) {
//some logic here
// return boolean
};
Run Code Online (Sandbox Code Playgroud)
也就是说,对于我的源数组,结果如下:
var result = some(array, "booleanProp", true) - 必须为真。
我尝试使用 lodash 函数 _.some(),但它为我的数组返回 false,看来 _.some() 找不到深层嵌套的属性。
如果函数可以支持复杂对象作为源,而不仅仅是数组,那将是非常酷的。
我很感激任何帮助,谢谢。
您可以通过检查实际对象来使用迭代和递归方法,如果值是对象,则迭代对象的键。
function some(object, property, value) {
return object[property] === value || Object.keys(object).some(function (k) {
return object[k] && typeof object[k] === 'object' && some(object[k], property, value);
});
}
var data = [{ simpleProp: "some value" }, { booleanProp: false }, { arrayProp: [{ prop1: "value1" }, { prop2: { prop22: "value22", prop23: "value23" } }, { prop3: "value3" }, { booleanProp: true }] }];
console.log(some(data, 'booleanProp', true)); // true
console.log(some(data, 'foo', 42)); // falseRun Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1913 次 |
| 最近记录: |