想象一下我有
const obj = {
arr_a: [9, 3, 2],
arr_b: [1, 5, 0],
arr_c: [7, 18]
}
将此对象转换为简单数组的最佳方法是什么:
[9, 3, 2, 1, 5, 0, 7, 18]
我试过了:
[].concat(obj.arr_a, obj.arr_b, obj.arr_c)
但我想知道lodash
或underscore
中是否有某些内容可以执行此操作。类似的东西:
_.flatAsArray(obj);
或:
obj.toFlatArray();
答案 0 :(得分:1)
要获取对象中所有键的值,可以使用_.values
。
使用ES6
[].concat(..._.values(obj))
使用_.flatten
_.flatten(_.values(obj))
答案 1 :(得分:1)
您可以使用flatMap获取所有这些值。
var result = _.flatMap(obj);
const obj = {
arr_a: [9, 3, 2],
arr_b: [1, 5, 0],
arr_c: [7, 18]
};
var result = _.flatMap(obj);
console.log(result);

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>
&#13;
答案 2 :(得分:0)
怎么样:
_.flatten(_.values(obj));
答案 3 :(得分:0)
您可以使用Object.values
和Array#reduce
。
var obj = { arr_a: [9, 3, 2], arr_b: [1, 5, 0], arr_c: [7, 18] },
result = Object.values(obj).reduce((r, a) => r.concat(a));
console.log(result);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
答案 4 :(得分:0)
您可以使用Object.values使用reducing
迭代对象值spread operatorObject.values(obj).reduce((result, val) => [...result, ...val], [])