Чистый способ удаления последнего & из строки в javascript - PullRequest
1 голос
/ 13 июля 2020

Ниже приведен код, который у меня отлично работает, единственная проблема, которую я вижу, мне нужно вызвать slice(0, -1) в моей строке, чтобы удалить & из последней. Сообщите мне, есть ли лучший и эффективный способ написать это или это также приемлемо.

Заранее спасибо.

Код -

const object1 = {
  a: 'somestring',
  b: 42,
  c: '',
  d: "test1",
  e: null,
  f: 'test2'
};

let str = '';
for (const [key, value] of Object.entries(object1)) {
  str += `${key}=${value}&`
}

const paramStr = str.slice(0, -1);

console.log(paramStr);

Ответы [ 3 ]

4 голосов
/ 13 июля 2020

Я думаю, что делать slice нормально. Есть множество других способов избежать этого. Например, вы можете map, а затем использовать .join('&'):

const object1 = {
  a: 'somestring',
  b: 42,
  c: '',
  d: "test1",
  e: null,
  f: 'test2'
};

console.log(Object.entries(object1).map(([k,v]) => `${k}=${v}`).join('&'))
3 голосов
/ 13 июля 2020

Просто map и join, что избавит от конечных &:

let paramStr = Object.entries(object1).map(([key, value]) => key + "=" + value).join("&");

Демо:

const object1 = {
  a: 'somestring',
  b: 42,
  c: '',
  d: "test1",
  e: null,
  f: 'test2'
};

let paramStr = Object.entries(object1).map(([key, value]) => key + "=" + value).join("&");

console.log(paramStr);
0 голосов
/ 13 июля 2020

Если вы используете loda sh, вы можете рассмотреть возможность использования функции trimEnd .

Она может удалить указанные символы из конца строки, если вы передаете их в качестве второго параметра.

Например:

const paramStr = _.trimEnd('a=somestring&b=42&c=&d=test1&e=null&f=test2&', '&');

console.log(paramStr);
// "a=somestring&b=42&c=&d=test1&e=null&f=test2"
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.19/lodash.min.js"></script>
...