标签: lodash

如果存在则更新或将新元素添加到对象数组 - javascript + lodash中的优雅方式

所以我有一个像这样的对象数组:

var arr = [
  {uid: 1, name: "bla", description: "cucu"},
  {uid: 2, name: "smth else", description: "cucarecu"},
]
Run Code Online (Sandbox Code Playgroud)

uid是此数组中对象的唯一ID.我正在寻找优雅的方法来修改对象,如果我们有给定的对象uid,或添加一个新的元素,如果uid在数组中不存在.我想这个函数在js控制台中表现得像:

> addOrReplace(arr, {uid: 1, name: 'changed name', description: "changed description"})
> arr
[
  {uid: 1, name: "bla", description: "cucu"},
  {uid: 2, name: "smth else", description: "cucarecu"},
]
> addOrReplace(arr, {uid: 3, name: 'new element name name', description: "cocoroco"})
> arr
[
  {uid: 1, name: "bla", description: "cucu"},
  {uid: 2, name: "smth else", description: "cucarecu"},
  {uid: …
Run Code Online (Sandbox Code Playgroud)

javascript arrays underscore.js lodash

15
推荐指数
4
解决办法
3万
查看次数

在lodash中添加对象的新属性

我有两个对象,我想添加从对象A到对象B的属性,我尝试使用不起作用的扩展,我是否需要使用不同的东西?

a = {
name = "value"
name2 = "value2"
}

b = {
name3 = "value"
name4 = "value2"
}
Run Code Online (Sandbox Code Playgroud)

我希望A包含两者

a = {
name = "value"
name2 = "value2"
name3 = "value"
name4 = "value2"
}
Run Code Online (Sandbox Code Playgroud)

javascript underscore.js lodash

15
推荐指数
2
解决办法
4万
查看次数

根据值过滤对象属性

是否有一些优雅的方法可以使用lodash/underscore从这个对象中过滤出虚假属性?类似于如何_.compact(array)从数组中删除falsey元素

所以

{
  propA: true,
  propB: true,
  propC: false,
  propD: true,
}
Run Code Online (Sandbox Code Playgroud)

回国

{
  propA: true,
  propB: true,
  propD: true,
}
Run Code Online (Sandbox Code Playgroud)

javascript underscore.js lodash

14
推荐指数
2
解决办法
2万
查看次数

如何在Lodash中遍历数组中的对象

我正在尝试在HTML模板中使用lodash来获取Node.js中的电子邮件.我有一个包含多个对象的数组.我想迭代每个对象并列出所有重复值.当我使用下面的代码时,我收到一个错误,指出该值未定义(例如,ReferenceError: firstName is not defined).HTML模板位于单独的文件中.

对我做错了什么的想法?

使用Javascript:

var template = fs.readFileSync('server/views/email-template.html').toString();
var htmlAll = _.template(template)(orderInfo);
Run Code Online (Sandbox Code Playgroud)

HTML:

<% _.forEach(function(firstName) { %><%- firstName %></td><% }); %> <% _.forEach(function(lastName) { %><%- lastName %></td><% }); %>
<% _.forEach(function(address) { %><%- address %></td><% });%>
<% _.forEach(function(city) { %><%- city %><% }); %>, <% _.forEach(function(state.code) { %><%- state.code %><% });
%> <% _.forEach(function(zip) { %><%- zip %><% }); %>

<% _.forEach(function(item) { %><td><%- item %></td><% }); %>
<% _.forEach(function(cost) { %><td><%- cost %></td><% }); …
Run Code Online (Sandbox Code Playgroud)

node.js underscore.js lodash

14
推荐指数
2
解决办法
3万
查看次数

TypeScript中的深度克隆(保留类型)

我需要在TypeScript中深度克隆一个对象.这应该不是问题,因为像Lodash这样的库提供了适当的功能.但是,这些似乎丢弃了类型信息.

> var a = new SomeClass();
> a instanceof SomeClass;
< true
> var b = _.cloneDeep(a);
> b instanceof SomeClass;
< false
Run Code Online (Sandbox Code Playgroud)

有没有办法在保留此类型信息的同时克隆TypeScript中的对象?

javascript typescript lodash

14
推荐指数
4
解决办法
3万
查看次数

Object.keys等效于lodash方法

我是loadash的新手,我正在努力学习操纵java脚本对象的好方法.

是否有一个等效的loadash方法:

Object.keys({ "tab1": "1" , tab2: "2"})[0];
Object.keys({ "tab1": "1" , tab2: "2"})[2];
Run Code Online (Sandbox Code Playgroud)

获取列表值?

如果有简单而好的方法来使用lodash以及我可以通过的任何文章.

javascript lodash

14
推荐指数
1
解决办法
2万
查看次数

NodeJS按键的值查找数组中的对象

我试图通过其中一个键的值获取数组中的对象.

数组:

var arr = [
        {
            city: 'Amsterdam',
            title: 'This is Amsterdam!'
        },
        {
            city: 'Berlin',
            title: 'This is Berlin!'
        },
        {
            city: 'Budapest',
            title: 'This is Budapest!'
        }
];
Run Code Online (Sandbox Code Playgroud)

我尝试过这样的事情,lodash但没有成功.

var picked = lodash.pickBy(arr, lodash.isEqual('Amsterdam');
Run Code Online (Sandbox Code Playgroud)

它返回一个空对象.

关于如何以lodash的方式做到这一点的任何想法(如果它甚至可能)?我可以用经典的方式做到这一点,创建一个新的数组,循环遍历所有对象,并将符合我标准的对象推送到新数组.但有没有办法用lodash做到这一点?

这不是重复的.

javascript arrays node.js lodash

14
推荐指数
3
解决办法
7万
查看次数

与lodash深度比较的对象数组

我有两个与我深深比较的对象阵列 lodash

但是,我有一个问题:

> var x = [{a:1, b:2}, {c:3, d:4}];
> var y = [{b:2, a:1}, {d:4, c:3}];
> _.difference(x,y, _.isEqual);
[ { a: 1, b: 2 }, { c: 3, d: 4 } ]
Run Code Online (Sandbox Code Playgroud)

我应该如何比较看两者是否相等?

javascript arrays javascript-objects lodash

14
推荐指数
3
解决办法
2万
查看次数

Angular 2 - Debouncing keyUp事件

如何去除在"keyUp"事件中调用的函数?

这是我的代码:

我的功能

private handleSearch(searchTextValue: string, skip?: number): void {
    this.searchTextValue = searchTextValue;
    if (this.skip === 0 || typeof skip === "undefined") {
        this.skip = 0;
        this.pageIndex = 1;
    } else {
        this.skip = skip;
    }
    this.searchTextChanged.emit({ searchTextValue: searchTextValue, skip: this.skip, take: this.itemsPerPage });
}
Run Code Online (Sandbox Code Playgroud)

我的HTML

<input type="text" class="form-control" placeholder="{{ 'searchquery' | translate }}" id="searchText" #searchText (keyup)="handleSearch(searchText.value)">
Run Code Online (Sandbox Code Playgroud)

我正在努力实现的是handleSearch在用户停止输入后稍微调用一下.

我发现我可以使用lodash's _debounce(),但我还没有找到如何把它放在我的keyUp活动上.

lodash debounce angular

14
推荐指数
2
解决办法
1万
查看次数

如何将数组与数组数组进行比较?

这是一个tic tac toe游戏应用程序的尝试.我有两个数组playerMoveswinningCombinations.像这样.

var playerMoves= [0,1,4];
var winningCombinations = [
        [0,1,2],[3,4,5],[6,7,8],
        [0,3,6],[1,4,7],[2,5,8],
        [0,4,8],[2,4,6]
      ];
Run Code Online (Sandbox Code Playgroud)

我需要过滤winningCombination数组,使得至少和最多两个playerMoves数组的值与每个数组匹配winningCombination.

findPossibleMove(playerMoves);
// should return [[0,1,2],[1,4,7], [0,4,8] ]
Run Code Online (Sandbox Code Playgroud)

我的尝试

function findPossibleMove(arr){
  var found = 0;
  return arr.forEach((item)=>{
    winningCombinations.map((obj)=>{
      if(obj.indexOf(item) !== -1) {
        found++;
      }
      if(found===2){
        return obj;
      }        
    })
  })      
}
Run Code Online (Sandbox Code Playgroud)

javascript arrays underscore.js lodash

14
推荐指数
1
解决办法
1570
查看次数