我有一个JavaScript数组,如:
[["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"]]
Run Code Online (Sandbox Code Playgroud)
我将如何将单独的内部数组合并为:
["$6", "$12", "$25", ...]
Run Code Online (Sandbox Code Playgroud) 我有对象数组,我只取位置数组。我的目标是将这些位置数组合并为一个数组,但是我没有这样做并得到空数组。这就是我的做法:
let results = [{
id: '1',
locations: ['aaaa', 'bbbbbb', 'cccccc']
},
{
id: '2',
locations: []
},
{
id: '3',
locations: ['ddd', 'aaadsad', 'sefd']
},
{
id: '4',
locations: ['ffff', 'eeee', 'sfdsfsd']
},
];
const locationIds = [].concat.apply([], ...results.filter(s => s.locations && s.locations.length > 0).map(({
locations
}) => ({
locations
})));
console.log(locationIds);Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?结果应该是
['aaaa', 'bbbbbb', 'cccccc', 'ddd', 'aaadsad', 'sefd', 'ffff', 'eeee', 'sfdsfsd'];
说我有这样的事情:
let values = [1,2,3,4];
let newValues = values.map((v) => {
return v *v ;
});
console.log(newValues); //[1,4,9,16]
Run Code Online (Sandbox Code Playgroud)
挺直的.
现在,如果我想为每个对象返回多个值,该怎么办?
例如.
let values = [1,2,3,4];
let newValues = values.map((v) => {
return [v *v, v*v*v, v+1] ;
});
console.log(newValues); //This is what I want to get
//[1, 1, 2, 4, 8, 3, 9, 27, 4, 16, 64, 5]
Run Code Online (Sandbox Code Playgroud)
我可以使用reduce函数
let values = [1,2,3,4];
let newValues = values.map((v) => {
return [v *v, v*v*v,v+1] ;
}).reduce((a, c) => {
return a.concat(c); …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个函数,它将遍历我的对象并返回对象的级别深度.
例如,如果我在此对象上运行该函数:
var test = {
name: 'item 1',
children: [{
name: 'level 1 item',
children: [{
name: 'level 2 item'
},
{
name: 'second level 2 item',
children: [{
name: 'level 3 item'
}]
}]
}]
}
var depth = myFunction(test); // Would return 2 (0 index based) as the collection goes 3 levels deep
Run Code Online (Sandbox Code Playgroud)
我一直在尝试编写一个确定最大深度的递归函数,但到目前为止我无法做到正确.这是我到目前为止:https://jsfiddle.net/6cc6kdaw/2/
似乎返回的值是每个节点命中的计数,而不是唯一级别.我明白我哪里出错了(从某种意义上说我没有过滤掉它)但是我已经盯着代码这么久以至于没有任何意义了!
有谁能够指出我哪里出错了?谢谢
javascript ×3
arrays ×2
collections ×1
ecmascript-6 ×1
flatmap ×1
flatten ×1
recursion ×1
typescript ×1