连接对象值

Concatenate Object values

本文关键字:对象 连接      更新时间:2023-09-26

我有一个JavaScript对象,我确信任何键的值都是一个数组(在某些情况下甚至是空的):

{key1:["a","b","c"],key2:["d","e","f"],key3:...}

除了使用Undercore,还有什么方法可以连接这个Object的所有值(并创建一个新数组)吗?

现在我使用Object.keys获得密钥名称,然后循环并连接。

感谢您的帮助。

var obj = {key1:["a","b","c"],key2:["d","e","f"]};
var arr = Object.keys(obj).reduce(function(res, v) {
    return res.concat(obj[v]);
}, []);
// ["a", "b", "c", "d", "e", "f"]

一种简单的方法是使用Object.values()获取值,并以这种方式将它们与[].concat.apply()连接:

const _obj = { key1:["a","b","c"], key2:["d","e","f"], key3:["g","h","i"] }
const _arr = [].concat.apply([], Object.values(_obj))
console.log(_arr)


另一种类似的方式合并Object.values(),将它们扩展到Array.concat()中,如下所示:

const _obj = { key1:["a","b","c"], key2:["d","e","f"], key3:["g","h","i"] }
const _arr = [].concat(...Object.values(_obj))
console.log(_arr)


同样,减少Object.values()的每个值并将其连接,您可以得到相同的结果:

const _obj = { key1:["a","b","c"], key2:["d","e","f"], key3:["g","h","i"] }
const _arr = Object.values(_obj).reduce((r,c) => r.concat(c), [])
console.log(_arr)


最后,还可以对Object.values()的每个值使用Array.prototype.flat()。请记住:并非所有浏览器都支持它

const _obj = { key1:["a","b","c"], key2:["d","e","f"], key3:["g","h","i"] }
const _arr = Object.values(_obj).flat()
console.log(_arr)

希望这些方法能帮助到其他人:)

检查数组concat函数

var obj = {key1:["a","b","c"],key2:["d","e","f"],key3:["g","h"]};
var resultArray = [];
for (var key in obj) resultArray = resultArray.concat(obj[key]);
alert(resultArray);

jsfiddle:

http://jsfiddle.net/qpLq11ea/

试试这个:http://jsfiddle.net/6hbp5bzo/

var arr= [];
var o={key1:["a","b","c"],key2:["d","e","f"]}
for(key in o){
  if(o.hasOwnProperty(key)){
    arr.push(o[key]);
}
}
alert(arr);