如何将数组值从一个数组映射到另一个数组JavaScript?

时间:2018-08-29 07:26:11

标签: javascript arrays map-function

这是我的代码。我想将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 :(得分:2)

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

答案 1 :(得分:1)

您可以使用destructuring assignment并使用computed property names构建新对象。

对于最后的键,可以使用对象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; }

答案 2 :(得分:0)

不确定要用行实现什么:

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

答案 3 :(得分:0)

您正在将值分配给有效负载,但获取了有效负载的值。

  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;

});

答案 4 :(得分:0)

您正在将数据映射到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);

此外,您还有以下没有用的代码

  

payload [“ rt”];      有效载荷[“ do”];      有效载荷[“ f1”];

答案 5 :(得分:0)

我不确定您想要哪种格式。

尝试以下代码:

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 ]

答案 6 :(得分:0)

此代码可以正常工作

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

有关更多信息,请参阅此link