最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

How to Map Array values from one Array to Another Array JavaScript? - Stack Overflow

programmeradmin3浏览0评论

This is my Code. Where I want to Pass the Values of kvArray to Second Array.

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;
});

The console.log is ing undefined. Can anyone help here? I am pretty new to Map function.

I want to Print this result.

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

This is my Code. Where I want to Pass the Values of kvArray to Second Array.

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;
});

The console.log is ing undefined. Can anyone help here? I am pretty new to Map function.

I want to Print this result.

 payload["do"]=10
 payload["f1"]=20
 payload["f2"]=30
Share Improve this question edited Aug 29, 2018 at 8:05 codemt asked Aug 29, 2018 at 7:26 codemtcodemt 4813 gold badges10 silver badges27 bronze badges 5
  • 1 You are assigning payload[1], payload[2] and payload[3] when you are referring to obj.key in your map function. Thus payload["rt"] remains undefined. – Lesleyvdp Commented Aug 29, 2018 at 7:29
  • what value you want to store in payload["rt"] ? – NullPointer Commented Aug 29, 2018 at 7:38
  • please add the wanted result as well. – Nina Scholz Commented Aug 29, 2018 at 7:41
  • @NullPointer i want payload["rt"] = 10. – codemt Commented Aug 29, 2018 at 8:03
  • btw, it's quite unclear, if the wanted keys depends on the index or on the key values. – Nina Scholz Commented Aug 29, 2018 at 8:17
Add a ment  | 

7 Answers 7

Reset to default 4

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);

You could use a destructuring assignment and build a new object with puted property names.

For the final keys, you could use an object keys with corresopnding keys to the the keys of the given object.

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; }

I'm not sure what format you want.

try the code below:

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

the result will be:

[ 10, 20, 30 ]

Not sure what you are trying to achieve with lines:

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

If you want to create new keys in the reformatterArray, try assigning a value, eg.

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: ""}

You were assigning the value to payload but getting the values of payload.

  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;

});

You are mapping data to reformattedArray , so you need to pring reformattedArray to get values,

   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);

Also you have following code which is of no use

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

This code works fine

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)

The above code print output like this

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

For more info, refer this link

发布评论

评论列表(0)

  1. 暂无评论