我有2个数组,数组a包含键,数组b包含它们的值
let a = ['name', 'options', 'address', 'options', 'gender', 'options'];
let b = ['john doe', 'a', 'india', 'b', 'male', 'c'];
我想要这样的输出
{
'name': 'john doe',
'options': 'a, b, c',
'address': 'india',
'gender': 'male'
}
答案 0 :(得分:3)
let a = ['name', 'options', 'address', 'options', 'gender', 'options'];
let b = ['john doe', 'a', 'india', 'b', 'male', 'c'];
let r = a.reduce((o,c,i) => {o[c] = o[c] ? o[c] + ", " + b[i]:b[i]; return o;}, {})
console.log(r);

答案 1 :(得分:1)
另一种方法如下所示。这循环a.length次,获取a的值并将其作为c的键添加,其中key的值是b的值。以下是其工作原理的细分:
对于a中的每个元素:如果c中没有元素a [i]的元素,则创建该键并将其设置为b [i]中的值。如果元素已经存在于c中(那么键必须表示数组,而不是单个项),如果该值是单个项,则将其设为数组,然后重新插入第一个值,然后在任何情况下,推送该项目的新项目。
let a = ['name', 'options', 'address', 'options', 'gender', 'options','options'];
let b = ['john doe', 'a', 'india', 'b', 'male', 'c', 'd'];
let c = {};
for (let i=0; i<a.length; i++) {
if (typeof c[a[i]] === 'undefined') {
c[a[i]] = b[i];
} else {
if (c[a[i]] instanceof Array === false) {
c[a[i]] = [c[a[i]]];
}
c[a[i]].push(b[i]);
}
}
console.log(c);
答案 2 :(得分:0)
invert(object){
let invertedObject ={};
for(let key in object){
const originalValue = object[key];
invertedObject = {originalValue : key}
}
return invertedObject
}
答案 3 :(得分:0)
let a = ['name', 'options', 'address', 'options', 'gender', 'options'];
let b = ['john doe', 'a', 'india', 'b', 'male', 'c'];
let r = a.reduce((o,c,i) => {o[c] = o[c] ? o[c] + ", " + b[i]:b[i]; return o;}, [])
console.log(r);