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更改