我需要这样做
var a1= ["a","b","c","d","e","f"]
var a2 = [1,2,3,4,5,6]
所需格式为
js = [
{key = "a", val=1}
{key = "b", val=2}
{key = "c", val=3}
{key = "d", val=4}
{key = "e", val=5}
{key = "f", val=6}
]
我尝试过这样的事情
for (var i = 0; i < a1.length; i++) {
for (var j = 0; j <= i; j++) {
var obj = {};
if (i == j) {
obj.key = a1[i];
obj.value = a2[j];
js.push(obj);
}
}
}
我无法获得所需的输出。谁能帮我吗?
重获
答案 0 :(得分:4)
如果两个数组的长度始终相同,则可以使用Array#map
将它们组合在一起:
function arraysToObject(keyArr, valArr) {
if(keyArr.length !== valArr.length) throw "Arrays must be of same length";
else return keyArr.map((e,i) => {
return {key:e, val:valArr[i]};
});
}
let a1 = ["a", "b", "c", "d", "e", "f"]
let a2 = [1, 2, 3, 4, 5, 6]
let a3 = ["a", "b", "c", "d", "e", "f", "g"];
let a4 = [1, 2, 3, 4, 5, 6];
console.log(JSON.stringify(arraysToObject(a1, a2))); // runs fine
console.log(arraysToObject(a3, a4)); // throws an error
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 1 :(得分:2)
如果您想使用ES6进行操作,则可以使用Array#map
进行单线操作:
var a1 = ['a', 'b', 'c', 'd', 'e', 'f']
var a2 = [1, 2, 3, 4, 5, 6]
var res = a1.map((key, index) => ({key, val: a2[index]}));
console.log(res);
答案 2 :(得分:1)
您只需要一个循环,因为a1
和a2
具有相同的长度。试试:
var js= [];
for(var i=0; i<a1.length;i++){
var obj = {};
obj.key = a1[i];
obj.value = a2[i];
js.push(obj);
}
答案 3 :(得分:1)
您还可以使用Array.prototype.reduce()
和Array.prototype.concat()
获得所需的结果。
演示
^XA^JUS^XZ
const a1 = ["a", "b", "c", "d", "e", "f"],
a2 = [1, 2, 3, 4, 5, 6];
let result = a1.reduce((r,v,i) => r.concat({key:v,val:a2[i]}), []);
console.log(result);
.as-console-wrapper {max-height: 100% !important;top: 0;}
const a1 = ["a", "b", "c", "d", "e", "f"],
a2 = [1, 2, 3, 4, 5, 6];
let result = a1.reduce((r,v,i) => [...r,{key:v,val:a2[i]}], []);
console.log(result);
答案 4 :(得分:0)
var a1= ['a','b','c','d','e','f']
var a2 = [1,2,3,4,5,6]
var js = a1.map( ( key, index ) => {
return ( {
key : key,
value : a2[index],
} );
} );
console.log(JSON.stringify(js))
答案 5 :(得分:0)
您可以使用Array.prototype.map
汇总所需的输出:
var a1= ['a','b','c','d','e','f'];
var a2 = [1,2,3,4,5,6];
var js = a1.map((k, i) => ({key: k, val: a2[i]}));
console.log(js);