猿问

按名称对 javascript 对象中的属性进行分组和提取

obj = {

  data_a: 'a',

  data_b: 'b',

  user_a: 'a',

  user_b: 'b'

  // and many more

};

从上述对象中,如何根据名称对属性进行分组和提取?我正在尝试获取以 data_ 开头的所有名称,然后将它们加载到一个新对象中,然后对以 user_ 开头的名称执行相同操作


有什么好方法可以做到这一点?


catspeake
浏览 182回答 4
4回答

慕田峪9158850

您可以通过以下步骤执行此操作:使用获取对象的所有条目Object.entries()使用filter()它并获取所有key以所需子字符串开头的条目。用于Object.fromEntries()将条目转换回对象。这是代码const obj = {  data_a: 'a',  data_b: 'b',  user_a: 'a',  user_b: 'b'};const filterByKey = (obj, string) => Object.fromEntries(Object.entries(obj).filter(([k, v]) => k.startsWith(string)))console.log(filterByKey(obj, "data"));console.log(filterByKey(obj, "user"))

有只小跳蛙

您可以遍历对象,获取键,并使用indexOf函数对其进行分类,如下所示:obj = {  data_a: 'a',  data_b: 'b',  user_a: 'a',  user_b: 'b'};let data_obj = {}, user_obj = {};for (var key in obj) {    if (obj.hasOwnProperty(key)) {         if(key.indexOf('data_')==0)              data_obj[key]=obj[key];         else if(key.indexOf('user_')==0)              user_obj[key]=obj[key];    }}console.log(data_obj);console.log(user_obj);

UYOU

您可以使用for ... in迭代对象的键,然后将它们及其值分组到新对象中:const obj = {  data_a: 'a',  data_b: 'b',  user_a: 'a',  user_b: 'b'};const users = {};const data = {};for (const k in obj) {   if (obj.hasOwnProperty(k)) {    if (k.startsWith("user_")) {       users[k] = obj[k];    } else if (k.startsWith("data_")) {       data[k] = obj[k];        }   }}console.log(users);console.log(data);

三国纷争

您可以使用检索对象的键Object.keys(obj)这将返回一个包含所有键的数组,您可以根据需要对其进行排序和使用。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答