массив javascript в строку значения ключа, разделенную пробелом - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть такой массив ["Asthma", "Allergy", "Sports and Fitness"], и мне нужно преобразовать этот массив в строку пары ключ-значение - что-то вроде ниже:

prop1: Asthma prop1: Allergy prop1: Sports and Fitness prop2: Asthma, prop2: Allergy prop2: Sports and Fitness

Возможно ли это сделать с помощью Array.Proptotype.Reduce()?

var propertyObjectRefinable = "";
jQuery("p[data-action='related-articles']>a span.media-content")
  .map(function() {
    return jQuery.trim($(this).text());
  }).get().forEach(function(item){
    propertyObjectRefinable += "RefinableString15:" + item + " " + "RefinableString16:" + item + " ";     
});

дает мне что-то вроде этого, что мне не нравится, потому что это не в порядке

RefinableString15:Sports and Fitness RefinableString16:Sports and Fitness RefinableString15:Allergy RefinableString16:Allergy RefinableString15:Asthma RefinableString16:Asthma "

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Вы можете сделать это с помощью map() и join()

let arr =["Asthma", "Allergy", "Sports and Fitness"];
let op = arr.map(e=>`prop1: ${e}`).join(' ');
console.log(op);

В случае, если вам нужно более одного свойства

let arr =["Asthma", "Allergy", "Sports and Fitness"];
let op = arr.reduce((e,a)=>{
 e[0].push(`prop1: ${a}`);
 e[1].push(`prop2: ${a}`);
 return e;
 },[[],[]]);
 let final = op.map(e=> e.join(' ')).join(' ');
console.log(final);
0 голосов
/ 13 декабря 2018

Вы можете использовать карту:

["Asthma", "Allergy", "Sports and Fitness"].map((item) => {
    return `prop1: ${item}`;
}).toString();

или более понятные для человека и более чистые:

let arr = ["Asthma", "Allergy", "Sports and Fitness"];
let newArr = arr.map((item) => {
    return `prop1: ${item}`;
});
console.log(newArr.toString());

Вывод:

"prop1: Asthma,prop1: Allergy,prop1: Sports and Fitness"

Карта вернет вам новуюмассив, содержащий новые элементы.

...