首页 > 解决方案 > 在字符串中添加数组中的数据并对其进行排序

问题描述

我正在尝试根据项目长度订购一个字符串

这是数组

var quote = [
  0: {ref1: 'CE255X', price_u: '1024100'},
  1: {ref1: 'M-TK137', price_u: '65400'},
  2: {ref1: '126A‎‎‎', price_u: '242300'},
  3: {ref1: 'M-CE278A', price_u: '35000'},
  4: {ref1: 'M-Q2612A‎‎‎‎‎‎', price_u: '35000'},
  5: {ref1: 'M-Q7551X', price_u: '130002'},
  6: {ref1: '507A', price_u: '905300'},
  7: {ref1: 'M-35A/36A/85A/78A', price_u: '35000'},
]

这是我尝试过的代码

let i = 0;
let detail = '';
for (let index = 0; index < quote.length; index++) {
 i++;

 if (quote[index].ref1.length <= 50) {
   detail += i + '.' + quote[index].ref1.padEnd(38, '‎‎‎#');
   detail += quote[index].price_u  + '\n';
 }
}
console.log(detail);

如果数据显示这个

1.CE255X‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#1024100
2.M-TK137‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎65400
3.126A‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎242300
4.M-CE278A‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎35000
5.M-Q2612A‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎35000
6.M-Q7551X‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎130002
7.507A‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎905300
8.M-35A/36A/85A/78A‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎35000

我想以这种方式订购它,替换#空格

1.CE255X‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#########1024100
2.M-TK137‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎########65400
3.126A‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎##########242300
4.M-CE278A‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎#######35000
5.M-Q2612A‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎#######35000
6.M-Q7551X‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎#######‎130002
7.507A‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎##########905300
8.M-35A/36A/85A/78A‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎‎‎#‎35000

任何帮助我都会感激

标签: javascripttypescript

解决方案


您可以通过使用提取每个项目的长度来获取最长ref1属性的长度,然后使用Math.max扩展语法来获取结果数组的最大值。mapref1

将 4 添加到结果中,并将其设置为填充时的目标长度:

var quote = [
  {ref1: 'CE255X', price_u: '1024100'},
  {ref1: 'M-TK137', price_u: '65400'},
  {ref1: '126A', price_u: '242300'},
  {ref1: 'M-CE278A', price_u: '35000'},
  {ref1: 'M-Q2612A', price_u: '35000'},
  {ref1: 'M-Q7551X', price_u: '130002'},
  {ref1: '507A', price_u: '905300'},
  {ref1: 'M-35A/36A/85A/78A', price_u: '35000'},
]

let i = 0;
let detail = '';

let maxLen = Math.max(...quote.map(e => e.ref1.length)) + 4

for (let index = 0; index < quote.length; index++) {
 i++;

 if (quote[index].ref1.length <= 50) {
   detail += i + '.' + quote[index].ref1.padEnd(maxLen, '#');
   detail += quote[index].price_u  + '\n';
 }
}
console.log(detail);


推荐阅读