Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 连接对象值_Javascript_Arrays_Object_Concat - Fatal编程技术网

Javascript 连接对象值

Javascript 连接对象值,javascript,arrays,object,concat,Javascript,Arrays,Object,Concat,我有一个JavaScript对象,我确信任何键的值都是一个数组(在某些情况下甚至是空的): 除了使用下划线,还有什么方法可以连接这个对象的所有值(并创建一个新数组) 此时,我使用Object.keys获取键名,然后循环并连接 感谢您的帮助。检查功能 jsfiddle: 试试这个: var obj={key1:[“a”、“b”、“c”],key2:[“d”、“e”、“f”]}; var arr=Object.keys(obj).reduce(函数(res,v){ 返回res.concat(obj

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

除了使用下划线,还有什么方法可以连接这个对象的所有值(并创建一个新数组)

此时,我使用
Object.keys
获取键名,然后循环并连接

感谢您的帮助。

检查功能

jsfiddle:

试试这个:

var obj={key1:[“a”、“b”、“c”],key2:[“d”、“e”、“f”]};
var arr=Object.keys(obj).reduce(函数(res,v){
返回res.concat(obj[v]);
}, []);
//[“a”、“b”、“c”、“d”、“e”、“f”]
一种简单的方法是使用
[].concat.apply()
以以下方式获取值:
const_obj={key1:[“a”、“b”、“c”],key2:[“d”、“e”、“f”],key3:[“g”、“h”、“i”]
常量_arr=[].concat.apply([],Object.values(_obj))

console.log(_arr)
您当前的实现有什么问题吗?这很好,但我正在寻找更“紧凑”的解决方案这与我当前的解决方案非常相似。请注意,尽管我个人喜欢这些功能性方法,但许多人会被这种方法弄糊涂……或者干脆
[].concat.apply([],value)
。因为有些人对函数式语言方法感到困惑;这超出了许多程序员的舒适区。请记住,您应该以一种简化未来维护工作的方式编写代码,而像这样的聪明方法可能会妨碍理解简单循环和连接可能不存在的地方;它成为不同语言的“共同点”,具有非常高的水平。例如,用
for
重写的应答代码仅限于JavaScript,程序员应该知道特定的JavaScript语言构造(我们应该像C一样使用
for
,或者我们可以使用
for in
或者类似的,我们应该使用括号)。函数式方法更简单,程序员应该知道函数和一些API(它们在不同语言之间变得越来越统一)。别误会,我对答案投了赞成票,因为我喜欢这种方法。但是,有时你必须务实,并意识到功能性方法需要某种程度的直觉,不幸的是,这种直觉并不总是存在的。
{key1:["a","b","c"],key2:["d","e","f"],key3:...}
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);
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);