Javascript 通过特定键仅过滤对象中的少数元素
我正在做这样的事情: 我的对象看起来像:Javascript 通过特定键仅过滤对象中的少数元素,javascript,reactjs,Javascript,Reactjs,我正在做这样的事情: 我的对象看起来像: { a: 1, b: 2, c: 3, game01: 1, game02: 2, game03: 3 } { game01: 1, game02: 2, game03: 3 } 我需要做的是从它返回一个只包含最后3对的对象,这样看起来: { a: 1, b: 2, c: 3, game01: 1, game02: 2, game03: 3 } { game01: 1, game0
{
a: 1,
b: 2,
c: 3,
game01: 1,
game02: 2,
game03: 3
}
{
game01: 1,
game02: 2,
game03: 3
}
我需要做的是从它返回一个只包含最后3对的对象,这样看起来:
{
a: 1,
b: 2,
c: 3,
game01: 1,
game02: 2,
game03: 3
}
{
game01: 1,
game02: 2,
game03: 3
}
我不希望手动操作,但最好使用类似于过滤数组的方法
谢谢 对象中没有真正的顺序概念,因此无法可靠地提取对象的“最后三个关键点” 但是,您可以循环对象中的所有关键点,并且只将具有
游戏
的关键点作为子字符串包含在最终结果中
示例
const obj={
答:1,,
b:2,
c:3,
游戏一:1,,
游戏02:2,,
游戏03:3
};
const result=Object.keys(obj).reduce((result,key)=>{
if(键包括('game')){
结果[键]=对象[键];
}
返回结果;
}, {});
控制台日志(结果)代码>您可以使用object.keys在对象上迭代,然后对最后3个键进行切片,并用旧键创建一个新对象
var test = {
a: 1,
b: 2,
c: 3,
game01: 1,
game02: 2,
game03: 3
}
var newObject = {};
Object.keys(test).slice(-3).forEach(ele=>newObject[ele] = test[ele]);
console.log(newObject)
您可以定义自己的筛选方法,例如在对象上
,使其工作方式有点像数组#筛选
:
Object.from=arr=>Object.assign(…arr.map(([k,v])=>({[k]:v}));
Object.filter=(obj,谓词)=>Object.from(Object.entries(obj.filter(谓词));
//示例用法:
const obj={a:1,b:2,c:3,game01:1,game02:2,game03:3};
const filtered=Object.filter(obj,([key,value])=>key.includes(“游戏”);
console.log(过滤)代码>您可以使用object.entries(obj)将现有对象转换为数组数组(每个元素数组包含[key,value]),然后循环检查每个键是否包含“game”子字符串。可以将符合此条件的对象添加到某个新对象中
let obj = {
a: 1,
b: 2,
c: 3,
game01: 1,
game02: 2,
game03: 3
};
let substring="game";
let key_value_pairs = Object.entries(obj);
let newObj = {};
key_value_pairs.forEach(element => {
if(String(element[0]).includes(substring)){
newObj[element[0]] = element[1];
}
});
//newObj will now be {game01: 1, game02: 2, game03: 3}
您想要最后三个项目,还是以“游戏”开头的项目?对象的键没有顺序。因此,获取最后3项可能会显示不同的结果。Object.keys不能保证相同的顺序good point,但没有其他方法可以保证相同的顺序。请建议你们是否知道任何一个。只有匹配的一部分,关键是在其他答案…否则的结构将需要不同的OP它并没有说,如果关键是遵循某种模式。如果你有更多的游戏**键可用呢?我想这取决于用例。但这里的证明顺序可以使用Object.keys更改