[英]search in json tree node js
我有一个JSON对象。 我需要找到其中yes = 1的字符串,并获取有关它的信息(名称,是....)。 如何在Node JS中做到这一点?
{"1": {"name":'alex',
"yes":'1'},
"2": {"name":'andy',
"yes":'0'}}
还是有什么办法可以像mysql一样在对象中进行搜索?
如果您想要香草javascript,下面的代码也可以在node.js
。
var testObj = { "1": { "name":'alex', "yes":'1' }, "2": { "name":'andy', "yes":'0' }, "3": { "name": 'bvvpp', "yes": '1' } }; function covertCheckFunc(checker) { return function convertChecker(target) { var key; for (key in checker) { if (!target.hasOwnProperty(key)) { continue; } // Single level if (typeof target[key] === 'undefined' || target[key] !== checker[key]) { return false; } } return true; } } // Get the first matched item. Return `null` if none match. function getFirstMatch(checkObj, checker) { // Convert a object to match to a match function. if (Object.prototype.toString.call(checker) !== '[object Function]') { checker = covertCheckFunc(checker); } var key; for (key in checkObj) { if (checkObj.hasOwnProperty(key) && checker(checkObj[key])) { return checkObj[key]; } } return null; } // Get array of matched item. Return empty array if none match. function getArrayMatch(checkObj, checker) { if (Object.prototype.toString.call(checker) !== '[object Function]') { checker = covertCheckFunc(checker); } var keys = Object.keys(checkObj); var arrayForm = keys.map(function(key) { return checkObj[key]; }); return arrayForm.filter(checker);; } console.log(getFirstMatch(testObj, {"yes": '1'})); console.log(getArrayMatch(testObj, {"yes": '1'}));
var testObj = { "1": { "name":'alex', "yes":'1' }, "2": { "name":'andy', "yes":'0' }, "3": { "name": 'bvvpp', "yes": '1' } }; var condition = { "yes": '1' }; var firstMatch = _.findWhere(testObj, condition); var arrayMatch = _.filter(testObj, function(item) { return _.isMatch(item, condition); }); console.log(firstMatch); console.log(arrayMatch);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
假设您只想检查相同级别的属性(即也没有要递归搜索的嵌套对象),则可以使用简单的for-in
循环并直接检查属性值。
var obj = {
"1": {
"name":'alex',
"yes":'1'
},
"2": {
"name":'andy',
"yes":'0'
}
};
var results = {};
for (var key in obj) {
if (obj.hasOwnProperty(key) && obj[key].yes === "1"){
results[key] = obj[key];
}
}
console.log(results); // {"1": { "name": "alex", "yes": "1" }}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.