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

如何检查对象数组中的缺失值并使用特殊字符添加缺失值

如何检查对象数组中的缺失值并使用特殊字符添加缺失值

BIG阳 2023-11-12 15:25:12
我目前正在通过对象值检查对象数组的缺失值,如果我使用数字或字符串数字,那么效果很好。但在某些情况下,缺失值将是带有特殊字符的字符串数字。我尝试分割给定的值并获取数字,然后检查该值是否丢失,但随后我陷入了将该特殊字符分配回该值的困境。这是我迄今为止尝试过的代码const one = '<0';const two = '20+';const data = [    { key: 1, value: 0 },  { key: 2, value: 0 },  { key: 3, value: 0 },  { key: 7, value: 0 },  { key: 8, value: 0 },]const min = one.split(/([0-9]+)/);const max = two.split(/([0-9]+)/);const numbersArr = new Array(+max[1]);  for (let i = +min[1]; i <= +max[1]; i++) {    numbersArr[i] = i;  }  const missingLabels = numbersArr.filter(    (itemOne) => !data.some((itemTwo) => itemTwo.key == `${min[0].length>0 && +min[1] === itemOne ? min[0] : ''}${itemOne}${max[2].length>0 && +max[1] === itemOne ? max[2] : ''}`)  ); missingLabels.map((item) => {    data.push({ key: `${min[0].length>0 ? min[0].length : null}${item}`, value: 0 });  });console.log(data)预期的结果应该是[{key: '<0', value: 0}, {key: '1', value: 0}, ... {key: '20+', value:0}] 我做错了什么,我该如何解决我的问题?任何例子将不胜感激!
查看完整描述

1 回答

?
达令说

TA贡献1821条经验 获得超6个赞

您可以匹配min和max并将数据放入哈希表中以映射已知键或添加新对象。


对于想要的密钥,您可以使用新密钥传播一个对象。


const

    getValue = v => +v.toString().match(/\d+/)[0],

    one = '<0',

    two = '20+',

    data = [{ key: '<0', value: 0 }, { key: 2, value: 0 }, { key: 3, value: 0 }, { key: 7, value: 0 }, { key: 8, value: 0 }, { key: '20+', value: 0 }],

    min = getValue(one),

    max = getValue(two),

    getKey = k => ({ [min]: one, [max]: two }[k] || k),

    keys = data.reduce((r, o) => (r[getValue(o.key)] = o, r), {}),

    result = Array.from(

        { length: max - min + 1 },

        (_, i) => ({ key: null, value: 99, ...keys[min + i], key: getKey(min + i) })

    );


console.log(result);

.as-console-wrapper { max-height: 100% !important; top: 0; }


查看完整回答
反对 回复 2023-11-12
  • 1 回答
  • 0 关注
  • 41 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信