cim*_*mak 13 javascript arrays
我确信有很多方法可以实现这一目标,但我正在寻找"优雅"的东西.
a = [
'a',
'b',
'c'
];
magicArrayJoin(a, {value: 255} ); // insert the same object between each item
result == [
'a',
{value: 255},
'b',
{value: 255}
'c'
];
Run Code Online (Sandbox Code Playgroud)
欢迎所有提案.:)
Jas*_* Tu 16
使用普通 ES6 的单行:
const interleave = (arr, thing) => [].concat(...arr.map(n => [n, thing])).slice(0, -1)
Run Code Online (Sandbox Code Playgroud)
用法:
interleave(['foo', 'bar', 'baz'], 'avocado')
Run Code Online (Sandbox Code Playgroud)
印刷:
> ["foo", "avocado", "bar", "avocado", "baz"]
Run Code Online (Sandbox Code Playgroud)
Epe*_*eli 13
你可以用flatMap来做.它可以从发现lodash例如
_.flatMap([1,2,3,4], (value, index, array) =>
array.length -1 !== index // check for the last item
? [value, "s"]
: value
);
Run Code Online (Sandbox Code Playgroud)
.OUPUTS
[1, "s", 2, "s", 3, "s", 4]
Run Code Online (Sandbox Code Playgroud)
Array#flatMap 提案正在开发中,所以将来这应该有效:
[1, 2, 3, 4].flatMap(
(value, index, array) =>
array.length - 1 !== index // check for the last item
? [value, "s"]
: value,
);
Run Code Online (Sandbox Code Playgroud)
Zla*_*ang 12
使用ES6的flatMap函数。
const insertBetween = (ele, array) => {
return array.flatMap((x) => [ele, x]).slice(1);
};
insertBetween('+', [1, 2, 3]);
Run Code Online (Sandbox Code Playgroud)
mic*_*nic 10
在我看来,最优雅的方法是这样做:
ES6语法版本
const insertIntoArray = (arr, value) => {
return arr.reduce((result, element, index, array) => {
result.push(element);
if (index < array.length - 1) {
result.push(value);
}
return result;
}, []);
};
Run Code Online (Sandbox Code Playgroud)
用法:
insertIntoArray([1, 2, 3], 'x'); // => [1, 'x', 2, 'x', 3]
Run Code Online (Sandbox Code Playgroud)
一个普通的循环似乎是最好的:
function intersperse(arr, el) {
var res = [], i=0;
if (i < arr.length)
res.push(arr[i++]);
while (i < arr.length)
res.push(el, arr[i++]);
return res;
}
Run Code Online (Sandbox Code Playgroud)
如果你正在寻找优雅的东西,它可能必须使用某种concatMap
,如在
function concatMap(arr, fn) { return [].concat.apply([], arr.map(fn)); }
function intersperse(arr, el) { return concatMap(arr, x => [el, x]).slice(1); }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7998 次 |
最近记录: |