Javascript合并两个数组

时间:2017-12-31 12:06:29

标签: javascript arrays storage local

我有两个数组。他们看起来像

var productId = [2,3,5];
var quantity = [10,13,15];

现在我想将这些数组合并到一个数组中并存储在本地存储中。新数组看起来像

var newArray = [2 =>'10',3=>'13',5=>'15'];

2 个答案:

答案 0 :(得分:1)

您可以使用Object.assignmap方法创建对象。



var productId = [2,3,5];
var quantity = [10,13,15];

var obj = Object.assign({}, ...productId.map((e, i) => ({[e]: quantity[i]})))
console.log(obj)

// localStorage.setItem('foo', JSON.stringify(obj))
// console.log(JSON.parse(localStorage.getItem('foo')))




或者您可以使用reduce方法代替map



var productId = [2,3,5];
var quantity = [10,13,15];

var obj = productId.reduce((r, e, i) => (r[e]= quantity[i], r), {})
console.log(obj)




答案 1 :(得分:0)

我可以看到你想合并两个长度相同的数组,这样合并后的数组将包含来自第一个数组的键和来自第二个数组的值。但与php不同,JavaScript没有带键和值对的数组概念。你可以做的是创建一个具有键值对的合并对象。你可以通过创建一个自定义函数来实现。所以,它的代码就像是:

let arrayA = ["name", "address", "phone"]; 
let arrayB = ["Niraj", "Kathmandu", "98423232223"];

function array_combine(a, b)
{
    if(a.length != b.length) return false; 
        let combObj = {};

        for (i = 0; i < a.length; i++)  
        {
           combObj[a[i]] = b[i];
        }

        return combObj;
}
  let combined_obj = array_combine(arrayA, arrayB);
  console.log(combined_obj);

您也可以直接使用ES6的reduce方法。

let arrayA = ["name", "address", "phone"]; 
let arrayB = ["Niraj", "Kathmandu", "98423232223"];

    let combined_obj = 
     arrayA.reduce((obj, k, i) => ({...obj, [k]: arrayB[i] }), {}));

如果您现在想要将combined_array存储在本地存储中,您可以首先对其进行字符串化然后存储。

    let combined_obj = JSON.stringify(array_combine(arrayA, arrayB)); 
    localStorage.setItem('combinedObj', combined_obj);