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

我目前正在通过对象值检查对象数组的缺失值,如果我使用数字或字符串数字,那么效果很好。但在某些情况下,缺失值将是带有特殊字符的字符串数字。我尝试分割给定的值并获取数字,然后检查该值是否丢失,但随后我陷入了将该特殊字符分配回该值的困境。这是我迄今为止尝试过的代码


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}] 我做错了什么,我该如何解决我的问题?任何例子将不胜感激!



BIG阳
浏览 45回答 1
1回答

达令说

您可以匹配min和max并将数据放入哈希表中以映射已知键或添加新对象。对于想要的密钥,您可以使用新密钥传播一个对象。const&nbsp; &nbsp; getValue = v => +v.toString().match(/\d+/)[0],&nbsp; &nbsp; one = '<0',&nbsp; &nbsp; two = '20+',&nbsp; &nbsp; 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 }],&nbsp; &nbsp; min = getValue(one),&nbsp; &nbsp; max = getValue(two),&nbsp; &nbsp; getKey = k => ({ [min]: one, [max]: two }[k] || k),&nbsp; &nbsp; keys = data.reduce((r, o) => (r[getValue(o.key)] = o, r), {}),&nbsp; &nbsp; result = Array.from(&nbsp; &nbsp; &nbsp; &nbsp; { length: max - min + 1 },&nbsp; &nbsp; &nbsp; &nbsp; (_, i) => ({ key: null, value: 99, ...keys[min + i], key: getKey(min + i) })&nbsp; &nbsp; );console.log(result);.as-console-wrapper { max-height: 100% !important; top: 0; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript