假设我有一个数组var arr = [1, 2, 3],我想用元素分隔每个元素,例如.var sep = "&",所以输出是[1, "&", 2, "&", 3].
考虑它的另一种方法是我想做Array.prototype.join(arr.join(sep))而不是结果是一个字符串(因为我试图使用的元素和分隔符是对象,而不是字符串).
有没有一种功能性/漂亮/优雅的方式来做es6/7或lodash没有像笨重的东西:
_.flatten(arr.map((el, i) => [el, i < arr.length-1 ? sep : null])) // too complex
Run Code Online (Sandbox Code Playgroud)
要么
_.flatten(arr.map(el => [el, sep]).slice(0,-1) // extra sep added, memory wasted
Run Code Online (Sandbox Code Playgroud)
甚至
arr.reduce((prev,curr) => { prev.push(curr, sep); return prev; }, []).slice(0,-1)
// probably the best out of the three, but I have to do a map already
// and I still have the …Run Code Online (Sandbox Code Playgroud) 我有一个值,我需要在propertie中返回包含此值的对象.
var search='CPP@';
var results=_.filter(collection,{VAL:search});
Run Code Online (Sandbox Code Playgroud)
我需要抓住所有压缩'CPP @'的对象,而不是等于.我准备了一个https://jsfiddle.net/licass/e87mxfqt/
提前致谢.
现在,我正在使用 Vite2.x 使用“rollup-plugin-visualizer”构建我的项目,我发现它构建了整个 lodash 包
我想在JavaScript中创建一个对象,它将值存储在键,值对中,我应该能够传递一些键,并且应该能够获得它的值.在.NET世界中,我们可以使用字典类来实现这种实现.我们在JavaScript世界中有任何选择吗?我正在使用ExtJs 4.1,所以如果你知道ExtJS中的任何选项,即使这样也行.
我尝试过类似的东西,但我无法通过钥匙获得价值.
var Widget = function(k, v) {
this.key = k;
this.value = v;
};
var widgets = [
new Widget(35, 312),
new Widget(52, 32)
];
Run Code Online (Sandbox Code Playgroud) 我一直在尝试使用_lodash.debounce(),我让它工作.但是我不确定它是否以最好的方式工作.我查看了lodash网站上的示例,它们似乎只是简单的示例,不传递参数.这就是我所拥有的:
$scope.parsePid = _.debounce(function () {
$scope.$apply(function () {
var pid = $scope.option.sPidRange;
if (pid == null || pid === "") {
$scope.pidLower = null;
$scope.pidUpper = null;
}
else if (pid.indexOf("-") > 0) {
pid = pid.split("-");
$scope.pidLower = parseInt(pid[0]);
$scope.pidUpper = parseInt(pid[1]);
}
else {
$scope.pidLower = parseInt(pid);
$scope.pidUpper = null;
}
});
}, 1500);
Run Code Online (Sandbox Code Playgroud)
上面的代码返回一个$scope.parsePid被去抖动的函数.请注意,在第4行,我得到了值$scope.option.SPidRange并在函数中使用它.我真的想以某种方式传递这个参数而不是这样.
我把这个函数称为:
$scope.$watch("option.sPidRange", function (pid) {
if (pid !== null) {
$scope.parsePid();
}
});
Run Code Online (Sandbox Code Playgroud)
这里的值pid应该等于 $scope.parsePid
我想将这个pid的值传递给debounced函数,但我不知道该如何做到这一点.我尝试了一些不同的东西,但去抖功能会出错.
是否可以将参数传递到去抖动function …
我需要执行类似于C#中编写的以下操作:
int[] items = { 1, 2, 3, 4, 5, 6, 7 };
var a = items.Skip(2).Take(3);
Run Code Online (Sandbox Code Playgroud)
哪个返回3,4和5
同样,我需要从对象列表中跳过记录
$scope.myObject = [ { Editable: true, Name: "Daniel Test", Site: "SE100"},
{ Editable: true, Name: "Test new", Site: "SE100"},
{ Editable: false, Name: "Test", Site: "SE100"} ]
Run Code Online (Sandbox Code Playgroud)
我需要跳过第一条记录并取回剩余的记录,即第1条记录
我怎么能用lodash/underscore做到这一点?
我刚刚开始使用Ionic 2开发一个新项目.我是TypeScript的新手,并且一直试图弄清楚如何将lodash包含到我的项目中.
那里有没有人做过这件事,能指出我正确的方向吗?
我正在玩React Native和lodash的辩护.
使用以下代码只会使其像延迟而不是去抖动一样工作.
<Input
onChangeText={(text) => {
_.debounce(()=> console.log("debouncing"), 2000)()
}
/>
Run Code Online (Sandbox Code Playgroud)
如果我输入像"foo"这样的输入,我希望控制台只记录一次debounce.现在它记录"debounce"3次.
最好先看看我的代码:
import React, { Component } from 'react';
import _ from 'lodash';
import Services from 'Services'; // Webservice calls
export default class componentName extends Component {
constructor(props) {
super(props);
this.state = {
value: this.props.value || null
}
}
onChange(value) {
this.setState({ value });
// This doesn't call Services.setValue at all
_.debounce(() => Services.setValue(value), 1000);
}
render() {
return (
<div>
<input
onChange={(event, value) => this.onChange(value)}
value={this.state.value}
/>
</div>
)
}
}
Run Code Online (Sandbox Code Playgroud)
只是一个简单的输入.在构造函数中,它value从道具(如果可用)中获取组件的本地状态.
然后在I 的onChange函数中input更新状态,然后尝试调用webservice端点来设置新值 …
我有这个数组:
[
{
id: 1,
name: 'test 1',
children: []
},
{
id: 2,
name: 'test 2',
children: [
{
id: 4,
name: 'test 4'
}
]
},
{
id: 3,
name: 'test 3',
children: []
}
]
Run Code Online (Sandbox Code Playgroud)
如何通过id此数组和嵌套children数组中的属性进行过滤?
例如,搜索id = 3,应返回test 3对象,并搜索id = 4应返回test 4对象.
lodash ×10
javascript ×8
ecmascript-6 ×2
reactjs ×2
.net ×1
angularjs ×1
arrays ×1
debounce ×1
extjs4 ×1
ionic ×1
jquery ×1
react-native ×1
tree-shaking ×1
typescript ×1
vite ×1