gpt4 book ai didi

arrays - JavaScript 根据属性值过滤对象数组

转载 作者:搜寻专家 更新时间:2023-10-31 23:34:43 26 4
gpt4 key购买 nike

我在 javascript 中有一个对象数组。内容是这样的;

obj_array = [{
"DATA_ID": 1,
"DATA_NAME": "Dim",
"DATA_BB_TYP": 2,
"DATA_MAC": "5474",
},
{
"DATA_ID": 3,
"DATA_NAME": "Spre",
"DATA_BB_TYP": 33,
"DATA_MAC": "8e30",
},
{
"DATA_ID": 2,
"DATA_NAME": "Dimb",
"DATA_BB_TYP": 2,
"DATA_MAC": "45e8",
},
{
"DATA_ID": 4,
"DATA_NAME": "Kht1",
"DATA_BB_TYP": 35,
"DATA_MAC": "58d0",
},
{
"DATA_ID": 6,
"DATA_NAME": "Sens",
"DATA_BB_TYP": 34,
"DATA_MAC": "d004",
}
]

我想保留一些对象并删除其余的。如果对象属性 DATA_BB_TYP 为 2 或 34,则对象将被保留。其他对象被删除。 obj_array 的结果将如下所示;

obj_array_retained = 
[{
"DATA_ID": 1,
"DATA_NAME": "Dim",
"DATA_BB_TYP": 2,
"DATA_MAC": "5474",
},
{
"DATA_ID": 2,
"DATA_NAME": "Dimb",
"DATA_BB_TYP": 2,
"DATA_MAC": "45e8",
},
{
"DATA_ID": 6,
"DATA_NAME": "Sens",
"DATA_BB_TYP": 34,
"DATA_MAC": "d004",
}
]

我正在使用 node.js v6.91。

编辑:有人建议我使用过滤器来解决这类问题。使用过滤技术的答案将是最受欢迎的。

最佳答案

您可以试试下面的方法一和方法二:

方法一:(使用过滤器)

注意:这将返回一个新数组,不会修改原始数组。

var obj_array = [{
"DATA_ID": 1,
"DATA_NAME": "Dim",
"DATA_BB_TYP": 2,
"DATA_MAC": "5474",
},
{
"DATA_ID": 3,
"DATA_NAME": "Spre",
"DATA_BB_TYP": 33,
"DATA_MAC": "8e30",
},
{
"DATA_ID": 2,
"DATA_NAME": "Dimb",
"DATA_BB_TYP": 2,
"DATA_MAC": "45e8",
},
{
"DATA_ID": 4,
"DATA_NAME": "Kht1",
"DATA_BB_TYP": 35,
"DATA_MAC": "58d0",
},
{
"DATA_ID": 6,
"DATA_NAME": "Sens",
"DATA_BB_TYP": 34,
"DATA_MAC": "d004",
}
];

var retained = [2, 34];

var new_obj_array = obj_array.filter(function(obj) {
if(retained.indexOf(obj.DATA_BB_TYP) === -1) {
return false;
}

return true;
});

console.log(new_obj_array);

方法 2:(如果您打算在浏览器中使用它,则为基本版本,因为旧浏览器不支持 filter)

var obj_array = [{
"DATA_ID": 1,
"DATA_NAME": "Dim",
"DATA_BB_TYP": 2,
"DATA_MAC": "5474",
},
{
"DATA_ID": 3,
"DATA_NAME": "Spre",
"DATA_BB_TYP": 33,
"DATA_MAC": "8e30",
},
{
"DATA_ID": 2,
"DATA_NAME": "Dimb",
"DATA_BB_TYP": 2,
"DATA_MAC": "45e8",
},
{
"DATA_ID": 4,
"DATA_NAME": "Kht1",
"DATA_BB_TYP": 35,
"DATA_MAC": "58d0",
},
{
"DATA_ID": 6,
"DATA_NAME": "Sens",
"DATA_BB_TYP": 34,
"DATA_MAC": "d004",
}
];

var retained = [2, 34];

for(var i = obj_array.length - 1; i >= 0; i--) {
var obj = obj_array[i];
if(retained.indexOf(obj.DATA_BB_TYP) === -1) {
obj_array.splice(i, 1);
}
}

console.log(obj_array);

关于arrays - JavaScript 根据属性值过滤对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40439015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com