Nodejs 如何对这个json数据进行筛选?

Nodejs 如何对这个json数据进行筛选?

json数据如下: { “R001” : { “A” : false, “B” : false },“R002” : { “A” : false, “B” : true },…}

我需要的结果是 R002以及R002中的B,其他的都不需要。请问大神怎么处理?不要理论,只要干货。谢谢 为什么只要B呢,因为B=true,也就是,只要有true的就取出来。 只要value=true的全部提取出来。

7 回复

要实现从给定的 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);

上述代码的工作原理如下:

  1. 使用 Object.entries(data) 将对象转换成一个键值对数组。
  2. 使用 reduce 方法遍历这些键值对。
  3. 在每次迭代中,检查当前对象的 B 属性是否为 true
  4. 如果条件满足,则将当前对象(仅包含 B 属性)添加到结果对象 acc 中。
  5. 最终返回筛选后的对象。

输出结果将会是:

{
    "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中。这样就能得到你想要的结果。

回到顶部