Nodejs 如何对这个json数据进行筛选?
Nodejs 如何对这个json数据进行筛选?
json数据如下: { “R001” : { “A” : false, “B” : false },“R002” : { “A” : false, “B” : true },…}
我需要的结果是 R002以及R002中的B,其他的都不需要。请问大神怎么处理?不要理论,只要干货。谢谢 为什么只要B呢,因为B=true,也就是,只要有true的就取出来。 只要value=true的全部提取出来。
要实现从给定的 JSON 数据中筛选出符合条件的数据(即 B
属性为 true
的项),可以使用 Node.js 的内置方法来完成。以下是一个简单的示例代码,展示如何实现这一点。
假设你的 JSON 数据存储在一个变量中:
const data = {
"R001": {
"A": false,
"B": false
},
"R002": {
"A": false,
"B": true
},
// 假设有更多的条目...
};
接下来,你可以使用 JavaScript 的 Object.entries()
方法来遍历对象的所有属性,并使用 Array.prototype.filter()
和 Array.prototype.reduce()
方法来筛选并构建新的结果对象。
以下是具体的代码实现:
// 遍历对象的所有键值对
const filteredData = Object.entries(data).reduce((acc, [key, value]) => {
// 检查每个子对象中的 'B' 是否为 true
if (value.B === true) {
// 如果满足条件,则将该对象添加到结果中
acc[key] = { B: value.B };
}
return acc;
}, {});
console.log(filteredData);
上述代码的工作原理如下:
- 使用
Object.entries(data)
将对象转换成一个键值对数组。 - 使用
reduce
方法遍历这些键值对。 - 在每次迭代中,检查当前对象的
B
属性是否为true
。 - 如果条件满足,则将当前对象(仅包含
B
属性)添加到结果对象acc
中。 - 最终返回筛选后的对象。
输出结果将会是:
{
"R002": {
"B": true
}
}
这样就实现了从原始 JSON 数据中筛选出符合条件的对象。
var data = { “R001” : { “A” : false, “B” : false },“R002” : { “A” : false, “B” : true },…};
var r2 = data.R002; var r2b = data.R002.B;
var result = []; for(var k in data){ result[result.length] = data[k].B; }
求大神来袭啊。
LZ的意思是pick出value为true的key以及其父key吧? 应该跟AB一点关系都没有吧?
http://jsfiddle.net/abruzzi/ztdyhxdq/6/
var x = {R1: {A: false, B: true}, R2: {A: true, B: false}, R3: {A: true, B: false, C: true}};
var result = [];
var pick = function (origin, parent) {
var current = [];
for (var k in origin) {
if (origin[k] === true) current.push(k);
if (typeof origin[k] === ‘object’) pick(origin[k], k);
}
if (current.length > 0) result[parent] = current;
}
pick(x, null) || console.log(result);
LZ的问题是啥呢?是不会写呢?还是自己写了一个觉得效率不够高?
为了满足你的需求,可以使用JavaScript的Object.keys
方法来遍历对象中的键,并使用Array.prototype.filter
方法来筛选出符合条件的数据。以下是一个具体的示例代码:
const data = {
"R001": {
"A": false,
"B": false
},
"R002": {
"A": false,
"B": true
}
};
const filteredData = Object.keys(data).reduce((acc, key) => {
if (data[key].B === true) {
acc[key] = data[key];
}
return acc;
}, {});
console.log(filteredData);
上述代码会输出:
{
"R002": {
"A": false,
"B": true
}
}
这段代码通过遍历data
对象的所有键,并检查每个键对应的值中B
字段是否为true
。如果为true
,则将该键及其对应的值添加到新的对象filteredData
中。这样就能得到你想要的结果。