【问题标题】:Javascript two array merge( key and value)Javascript 两个数组合并(键和值)
【发布时间】:2018-06-17 02:46:57
【问题描述】:

我有两个数组。我想将这两个数组合并为一个数组。一个数组包含键和另一个值。我的数组看起来像

productId = [8,7,9];//Key Element
quantity = ["5","1","3"];//Value Element
//expected new array
newarray = {
    "8": 5,
    "7": 1,
    "9": 3
}

我已经尝试过以这种方式合并这些数组

var newArray = {};
for(var i=0; i< productId.length; i++){
  newArray[productId[i]] = quantity [i];
}
console.log(newArray);

返回

Object [ <7 empty slots>, "5", "1", "3" ]

【问题讨论】:

  • 您的代码工作正常,请分享一个工作小提琴或 sn-p 来演示/复制您的问题。
  • 你似乎想创建对象数组而不是数组
  • @AuxTaco 哪个浏览器?
  • Mozila Firefox 和 Google chrome 展台
  • @AuxTaco Yup 正要删除我的 cmets。 Sourabh 刚刚链接了一个突出 FF 错误的问题。

标签: javascript arrays merge key


【解决方案1】:

尝试以下方法:

var productId = [8,7,9];//Key Element
var quantity = ["5","1","3"];//Value Element

var obj = {};
var i = 0;
for(var k of productId) {
    obj[k] = parseInt(quantity[i]);
    i++;
}
console.log(obj);

【讨论】:

  • 另外,这是.map 的一个非常糟糕的实现。您正在更新一个对象并在地图中返回。并且您使用[0] 进行显示。这是错误的
  • 仍然返回 [, "5", "1"."3" ]
  • @Rajesh 不,它不适合你
【解决方案2】:

您正在使用 Firefox,因此您可能会遇到此类问题,因为该问题可能是由 Firefox 的 console.log 解释输入对象的方式引起的。

请看这里

Empty slots in JavaScript objects?

试试这个

var productId = [8,7,9];
var quantity = ["5","1","3"];
var newarray = {};
productId.forEach((key, i) => newarray[key] = quantity[i]);
console.log(newarray);

【讨论】:

  • 请同时说明 OP 的代码有什么问题。为什么您的代码有效而 OP 无效?
  • @Rajesh 嘿,这是 Firefox 的问题
  • 我已经更新了我的答案,您可以在其中找到链接查看
  • 谢谢!作为 chrome 用户,我不知道。
  • @Rajesh 欢迎兄弟 :)
【解决方案3】:

您的新“数组”不是Array,而是Object

您可以使用Array.reduce 迭代其中一个数组来构造对象。

类似的东西:

const arr1 = ['8', '2', '4'];
const arr2 = ['28', '12', '45'];

const result = arr1.reduce((obj, currentItem, index) => {
  obj[currentItem] = arr2[index];
  return obj;
}, {});

console.log(result);

【讨论】:

    猜你喜欢
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    相关资源
    最近更新 更多