首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何遍历对象数组以查找包含相同单词的键值-Javascript

如何遍历对象数组以查找包含相同单词的键值-Javascript
EN

Stack Overflow用户
提问于 2019-10-18 09:54:22
回答 1查看 35关注 0票数 0

我有一个带有文本名的对象数组

代码语言:javascript
运行
复制
array= [{
  text:"ABC",
  someobj:{}
  length: 3
 },{
  text:"XYZ",
  someobj:{},
  length: 4
 },{
  text:"TES",
  someobj:{},
  length: 2
 },{
  text:"ABC_VALUE",
  someobj:{},length: 3
 },{
  text:"TES_VALUE",
  someobj:{},length: 10
 },{
  text:"SME",
  someobj:{},length: 39
 },{
  text:"SME_VALUE",
  someobj:{}, length: 1
 }
]

如您所见,我在一些文本名称中使用了_VALUE。我试图得到所有匹配值的总长度,即"ABC“的长度+”ABC_VALUE“的长度(6),类似的"SME_VALUE”的长度+ "SME“的长度(40)。

我尝试了切换大小写和if条件。

代码语言:javascript
运行
复制
function getVlaues(obj)
let length=0;
    else if(obj.text.includes("SME")) {length += obj.length;}
    else if (obj.text.includes("ABC")) {length += obj.length;}
    else if (obj.text.includes("TES")) {length += obj.length;}

    return length;
}

但这并没有返回2对象的总长度。你知道怎么做吗?

EN

Stack Overflow用户

回答已采纳

发布于 2019-10-18 09:58:24

您可以在_上拆分文本,并使用第一个值作为键并计算每个键的长度

代码语言:javascript
运行
复制
let array = [{text: "ABC",someobj: {},length: 3}, {text: "XYZ",someobj: {},length: 4}, {text: "TES",someobj: {},length: 2}, {text: "ABC_VALUE",someobj: {},length: 3}, {text: "TES_VALUE",someobj: {},length: 10}, {text: "SME",someobj: {},length: 39}, {text: "SME_VALUE",someobj: {},length: 1}]

let final = array.reduce((op, inp) => {
  let text = inp.text.split('_', 1)[0]
  op[text] = op[text] || 0
  op[text] += inp.length
  return op
}, {})

console.log(final)

或者,如果您确定text最终只有_value不同,那么您可以替换该部分并将其用作密钥

代码语言:javascript
运行
复制
let array = [{text: "ABC",someobj: {},length: 3}, {text: "XYZ",someobj: {},length: 4}, {text: "TES",someobj: {},length: 2}, {text: "ABC_VALUE",someobj: {},length: 3}, {text: "TES_VALUE",someobj: {},length: 10}, {text: "SME",someobj: {},length: 39}, {text: "SME_VALUE",someobj: {},length: 1}]

let final = array.reduce((op, inp) => {
  let text = inp.text.replace(/_value$/gi,'')
  op[text] = op[text] || 0
  op[text] += inp.length
  return op
}, {})

console.log(final)

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58442909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档