为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

catspeake 2022-10-27 10:54:08
obj = {  data_a: 'a',  data_b: 'b',  user_a: 'a',  user_b: 'b'  // and many more};从上述对象中,如何根据名称对属性进行分组和提取?我正在尝试获取以 data_ 开头的所有名称,然后将它们加载到一个新对象中,然后对以 user_ 开头的名称执行相同操作有什么好方法可以做到这一点?
查看完整描述

4 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

您可以通过以下步骤执行此操作:

  • 使用获取对象的所有条目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"))


查看完整回答
反对 回复 2022-10-27
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

您可以遍历对象,获取键,并使用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);


查看完整回答
反对 回复 2022-10-27
?
UYOU

TA贡献1878条经验 获得超4个赞

您可以使用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);


查看完整回答
反对 回复 2022-10-27
?
三国纷争

TA贡献1804条经验 获得超7个赞

您可以使用检索对象的键

Object.keys(obj)

这将返回一个包含所有键的数组,您可以根据需要对其进行排序和使用。


查看完整回答
反对 回复 2022-10-27
  • 4 回答
  • 0 关注
  • 181 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号