将JS数组值合并为单个值

4
我有这个对象。
a = {key:'animals',
     options: ['dog','cat','penguin']}

我该如何简化它为以下内容:
b = ['animals','dogcatpenguin']

你的键是否一致? - Kailash Yadav
迭代属性并将它们的值推到新数组中。请注意,浏览器可能以不同的顺序迭代属性。如果您始终拥有这些属性,可以直接访问它们。你目前尝试了什么?你卡在哪里了? - Felix Kling
2
你可以尝试使用以下代码:var b = []; b.push(a.key); b.push(a.options.join('')); - Kailash Yadav
1
var b = new Array(a.key, a.options.join("")); - 需要注意@FelixKling所说的,如果您打算进行迭代,则对象键的顺序不能保证。 - CodingIntrigue
我正在为一个Angular项目使用这个解决方案,第一个答案完美地解决了我的问题。谢谢大家 :) - Son Le
6个回答

9

Like so

var a = {
  key: 'animals',
  options: ['dog','cat','penguin']
};

var key, b = [];

for (key in a) {
  b.push(Array.isArray(a[key]) ? a[key].join('') : a[key]);
}

console.log(b);

或者您可以使用Object.keys.map一起使用。

var a = {
    key: 'animals',
    options: ['dog','cat','penguin']
};

var b = Object.keys(a).map(function (key) {
    return Array.isArray(a[key]) ? a[key].join('') : a[key];     
});

console.log(b);


2

试试这个

var a = {
  key: 'animals',
  options: ['dog', 'cat', 'penguin']
}
var result = Object.keys(a).map(function(key){
  var item = a[key];
  return item instanceof Array ? item.join('') : item;
});
console.log(result);


1
var a = {
  key: 'animals',
  options: ['dog','cat','penguin']
};

var idx, b = [];

for (idx in a) { //Iterate through all the items of object a
  b.push(Array.isArray(a[key]) ? a[key].join('') : a[key]); //Check if item is array join with (blank) or if not directly push it new array
}

console.log(b);

1
另一个可能的解决方案。
a = {key:'animals',options: ['dog','cat','penguin']}

var b = new Array();
for(var index in a) { 
    var attr = a[index].toString().split(",").join("");
    b.push(attr);
}

1
b = [a.key,Object.values(a)[1].reduce((a,b)=> a+b)]

2
虽然这段代码可能回答了问题,但提供有关它如何以及/或为什么解决问题的附加上下文将改善答案的长期价值。 - Tiago Martins Peres

1
您可以使用计算后的值创建一个新的数组。

var a = {key:'animals',
     options: ['dog','cat','penguin']};

var b = [
  a.key,
  a.options.join('')
];

document.write(JSON.stringify(b));


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接