Как отобразить значения массива из одного массива в другой массив JavaScript? - PullRequest
0 голосов
/ 29 августа 2018

Это мой код. Где я хочу передать значения kvArray во второй массив.

var kvArray = [{key: 1, value: 10}, 
               {key: 2, value: 20}, 
               {key: 3, value: 30}];

var reformattedArray = kvArray.map(obj => { 
   var payload = {};
   payload["rt"];
   payload["do"];
   payload["f1"];
   payload[obj.key] = obj.value;
   console.log(payload["rt"]);
   return payload;
});

console.log идет undefined. Кто-нибудь может здесь помочь? Я довольно новичок в функции Map.

Я хочу напечатать этот результат.

 payload["do"]=10
 payload["f1"]=20
 payload["f2"]=30

Ответы [ 7 ]

0 голосов
/ 29 августа 2018

Вы можете использовать деструктурирующее присваивание и создать новый объект с вычисленными именами свойств .

Для окончательных ключей вы можете использовать объект keys с соответствующими ключами для ключей данного объекта.

var kvArray = [{ key: 1, value: 10 }, { key: 2, value: 20 }, { key: 3, value: 30 }],
    keys = { 1: 'rt', 2: 'do', 3: 'fi' },
    result = kvArray.map(({ key, value }) => ({ [keys[key]]: value }));
    
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
0 голосов
/ 29 августа 2018

var kvArray = [{key: 1, value: 10}, 
               {key: 2, value: 20}, 
               {key: 3, value: 30}];

var reformattedArray = kvArray.map(obj =>{ 
   var payload = {};
   const mapping = [null, 'rt', 'do', 'f1']; 
   const key = mapping[obj.key];
   payload[key] = obj.value;
   return payload;
});
console.log(reformattedArray);
0 голосов
/ 29 августа 2018

Этот код отлично работает

let kvArray = [{key: 1, value: 10},
           {key: 2, value: 20},
           {key: 3, value: 30}];

let reformattedArray = kvArray.map(obj =>{
   var payload = {};
   payload[obj.key] = obj.value;
   return payload;
});

console.log(reformattedArray)

Приведенный выше код выводится на печать следующим образом

[
  0: {1: 10}
  1: {2: 20}
  2: {3: 30}
]

Для получения дополнительной информации см. Ссылку

0 голосов
/ 29 августа 2018

Я не уверен, какой формат вы хотите.

попробуйте код ниже:

var kvArray = [{ key: 1, value: 10 },
  { key: 2, value: 20 },
  { key: 3, value: 30 }];
var reformattedArray = kvArray.map(obj => obj.value);
console.log(reformattedArray)

результат будет:

[ 10, 20, 30 ]
0 голосов
/ 29 августа 2018

Вы отображаете данные в reformattedArray, поэтому вам нужно вывести reformattedArray для получения значений,

   var kvArray = [{key: 1, value: 10}, 
               {key: 2, value: 20}, 
               {key: 3, value: 30}];
var reformattedArray = kvArray.map(obj =>{ 
   var payload = {};
   payload[obj.key] = obj.value;
   return payload;
});

  console.log(reformattedArray);

Также у вас есть следующий код, который бесполезен

Полезная нагрузка [ "RT"]; Полезная нагрузка [ "делать"]; Полезная нагрузка [ "f1"];

0 голосов
/ 29 августа 2018

Вы присваивали значение полезной нагрузке, но получали значения полезной нагрузки.

  var kvArray = [{key: 1, value: 10}, 
               {key: 2, value: 20}, 
               {key: 3, value: 30}];
var reformattedArray = kvArray.map(obj =>{ 
   var payload = {};
   payload[obj.key] = obj.value;
  console.log(payload[obj.key]);
   return payload;

});
0 голосов
/ 29 августа 2018

Не уверен, что вы пытаетесь достичь с помощью строк:

payload["rt"];
payload["do"];
payload["f1"];

Если вы хотите создать новые ключи в массиве reformatterArray, попробуйте присвоить значение, например.

var kvArray = [{key: 1, value: 10}, 
           {key: 2, value: 20}, 
           {key: 3, value: 30}];
var reformattedArray = kvArray.map(obj =>{ 
   var payload = {};
   payload["rt"] = "";
   payload["do"]= "";
   payload["f1"]= "";
   payload[obj.key] = obj.value;
   console.log(payload["rt"]);
   return payload;
});

console.log(reformattedArray):
//result
0: {1: 10, rt: "", do: "", f1: ""}
1: {2: 20, rt: "", do: "", f1: ""}
2: {3: 30, rt: "", do: "", f1: ""}
...