标签: lodash

使用lodash将对象转换为数组

我怎样才能改变一个大objectarray与lodash?

例:

var obj = {
  22: {name:"John", id:22, friends:[5,31,55], works:{books:[], films:[],}
  12: {name:"Ivan", id:12, friends:[2,44,12], works:{books:[], films:[],}
}

// transform to 
var arr = [{name:"John", id:22...},{name:"Ivan", id:12...}]
Run Code Online (Sandbox Code Playgroud)

谢谢!

javascript arrays object lodash

144
推荐指数
10
解决办法
16万
查看次数

LoDash:从对象属性数组中获取值数组

我确定它在LoDash文档中的某个地方,但我似乎找不到合适的组合.

var users = [{
      id: 12,
      name: Adam
   },{
      id: 14,
      name: Bob
   },{
      id: 16,
      name: Charlie
   },{
      id: 18,
      name: David
   }
]

// how do I get [12, 14, 16, 18]
var userIds = _.map(users, _.pick('id'));
Run Code Online (Sandbox Code Playgroud)

javascript lodash

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

lodash多列sortBy降序

有一种漂亮的方法可以根据几个属性对对象数组进行排序:

var data = _.sortBy(array_of_objects, ['type', 'name']);
Run Code Online (Sandbox Code Playgroud)

但是,这仅适用于升序排序.是否有一些方便的方法来定义每列的方向?例如

var data = _.sortBy(array_of_objects, [{'type': 'asc'}, {'name': 'desc'}]);
Run Code Online (Sandbox Code Playgroud)

javascript sorting lodash

139
推荐指数
6
解决办法
12万
查看次数

如何使用lodash从Array中查找并返回一个对象?

我的对象:

[
    {
        description: 'object1', id: 1
    },
    {
        description: 'object2', id: 2
    }
    {
        description: 'object3', id: 3
    }
    {
        description: 'object4', id: 4
    }
]
Run Code Online (Sandbox Code Playgroud)

在我的函数中,我正在传递描述以找到匹配的ID:

function pluckSavedView(action, view) {
    console.log('action: ', action);
    console.log('pluckSavedView: ', view);  // view = 'object1'

    var savedViews = retrieveSavedViews();
    console.log('savedViews: ', savedViews);

    if (action === 'delete') {
        var delete_id = _.result(_.find(savedViews, function(description) {
            return description === view;
        }), 'id');

        console.log('delete_id: ', delete_id); // should be '1', but is undefined
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用lodash的find方法:https …

javascript arrays lodash

136
推荐指数
9
解决办法
27万
查看次数

如何在lodash中使用includes方法来检查对象是否在集合中?

lodash让我检查基本数据类型的成员资格includes:

_.includes([1, 2, 3], 2)
> true
Run Code Online (Sandbox Code Playgroud)

但以下不起作用:

_.includes([{"a": 1}, {"b": 2}], {"b": 2})
> false
Run Code Online (Sandbox Code Playgroud)

这让我感到困惑,因为以下搜索集合的方法似乎做得很好:

_.where([{"a": 1}, {"b": 2}], {"b": 2})
> {"b": 2}
_.find([{"a": 1}, {"b": 2}], {"b": 2})
> {"b": 2}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?如何检查集合中对象的成员资格includes

编辑:问题最初是针对lodash版本2.4.1,更新为lodash 4.0.0

javascript functional-programming lodash

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

映射对象保留键

mapunderscore.js中的函数,如果使用javascript对象调用,则返回从对象的值映射的值数组.

_.map({one: 1, two: 2, three: 3}, function(num, key){ return num * 3; });
=> [3, 6, 9]
Run Code Online (Sandbox Code Playgroud)

有没有办法让它保存钥匙?即,我想要一个返回的函数

{one: 3, two: 6, three: 9}
Run Code Online (Sandbox Code Playgroud)

javascript underscore.js lodash

126
推荐指数
6
解决办法
11万
查看次数

Angular 4 HttpClient查询参数

我一直在寻找一种方式来传递查询paramters与新API调用HttpClientModuleHttpClient,还没有找到一个解决方案.使用旧Http模块,您可以编写类似这样的内容.

getNamespaceLogs(logNamespace) {

    // Setup log namespace query parameter
    let params = new URLSearchParams();
    params.set('logNamespace', logNamespace);

    this._Http.get(`${API_URL}/api/v1/data/logs`, { search: params })
}
Run Code Online (Sandbox Code Playgroud)

这将导致对以下URL的API调用:

localhost:3001/api/v1/data/logs?logNamespace=somelogsnamespace

但是,新HttpClient get()方法没有search属性,所以我想知道在哪里传递查询参数?

http typescript lodash angular angular-httpclient

123
推荐指数
5
解决办法
15万
查看次数

使用Lodash循环JavaScript对象中的属性

是否可以遍历JavaScript对象中的属性?例如,我有一个JavaScript对象定义如下:

myObject.options = {
  property1: 'value 1',
  property2: 'value 2'
};
Run Code Online (Sandbox Code Playgroud)

属性将动态添加到此对象.有没有办法让我循环检查一个属性是否存在?如果是这样,怎么样?

javascript lodash

113
推荐指数
4
解决办法
13万
查看次数

在lodash中有一个函数来替换匹配的项目

我想知道在lodash中是否有一个更简单的方法来替换JavaScript集合中的项目?(可能重复,但我不明白那里的答案:)

我看了他们的文档但找不到任何东西

我的代码是:

var arr = [{id: 1, name: "Person 1"}, {id:2, name:"Person 2"}];
// Can following code be reduced to something like _.XX(arr, {id:1}, {id:1, name: "New Name"});
_.each(arr, function(a, idx){
  if(a.id === 1){
    arr[idx] = {id:1, name: "Person New Name"};
    return false;
  }
});

_.each(arr, function(a){
  document.write(a.name);
});
Run Code Online (Sandbox Code Playgroud)

更新: 我正在尝试替换的对象有许多属性,如

{id:1,Prop1:...,Prop2:...,依此类推}

解:

感谢dfsq,但我在lodash中找到了一个合适的解决方案,似乎工作正常并且非常整洁,我把它放在mixin中,因为我在很多地方都有这个要求.JSBin

var update = function(arr, key, newval) {
  var match = _.find(arr, key);
  if(match)
    _.merge(match, newval);
  else
    arr.push(newval);    
};

_.mixin({ '$update': …
Run Code Online (Sandbox Code Playgroud)

javascript lodash

113
推荐指数
8
解决办法
11万
查看次数

如何导入单个Lodash功能?

使用webpack,我试图导入isEqual,因为lodash似乎导入了所有内容.我尝试过以下操作但没有成功:

import { isEqual } from 'lodash'

import isEqual from 'lodash/lang'

import isEqual from 'lodash/lang/isEqual'

import { isEqual } from 'lodash/lang'

import { isEqual } from 'lodash/lang'
Run Code Online (Sandbox Code Playgroud)

javascript lodash

103
推荐指数
5
解决办法
6万
查看次数