标签: lodash

下划线/ lodash由多个属性唯一

我有一个带有重复项的对象数组,我正在尝试获得一个唯一的列表,其中唯一性由对象属性的子集定义.例如,

{a:"1",b:"1",c:"2"}
Run Code Online (Sandbox Code Playgroud)

我想c在唯一性比较中忽略.

我可以做点什么

_.uniq(myArray,function(element) { return element.a + "_" + element+b});
Run Code Online (Sandbox Code Playgroud)

我希望我能做到

_.uniq(myArray,function(element) { return {a:element.a, b:element.b} });
Run Code Online (Sandbox Code Playgroud)

但这不起作用.是否有类似我可以做的事情,或者如果我正在比较多个属性,我是否需要创建对象的可比表示?

javascript unique underscore.js lodash

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

在Lodash forEach中"继续"

我正在查看Underscore和Lodash库之间的差异,我遇到了一个关于_.each/_.forEach的问题.

在Underscore中,_.each函数不能突破循环.当使用return false时,它只能作为"continue"语句使用.(这是我的预期功能)=它强制进行循环的下一次迭代,跳过其间的任何代码.

另一方面,在Lodash中,返回false告诉_.forEach()该迭代将是最后一次.有没有办法让Lodash中的"继续"行为也起作用?

谢谢.

javascript each foreach underscore.js lodash

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

将对象数组中的所有数据汇总到新的对象数组中

我有一个对象数组,如下所示:

var data = [{costOfAirtickets: 2500, costOfHotel: 1200},{costOfAirtickets: 1500, costOfHotel: 1000}]
Run Code Online (Sandbox Code Playgroud)

我想对数组中的每个元素求和,以产生如下数组:

var result = [{costOfAirtickets: 4000, costOfHotel: 3200}]
Run Code Online (Sandbox Code Playgroud)

我使用了map和reduce函数,但我只能将一个单独的元素求和:

data.map(item => ite.costOfAirtickets).reduce((prev, next)=>prev + next); // 22
Run Code Online (Sandbox Code Playgroud)

目前这产生了一个单独的值,这不是我想要的初始解释.

有没有办法在Javascript或可能与lodash这样做.

javascript arrays lodash

26
推荐指数
5
解决办法
3987
查看次数

LoDash _.has有多个键

是否有方法或方法链来检查lodash中可用的对象中是否存在密钥数组,而不是使用以下内容?

var params = {...}
var isCompleteForm = true;
var requiredKeys = ['firstname', 'lastname', 'email']

for (var i in requiredKeys) {
    if (_.has(params, requiredKeys[i]) == false) {
        isCompleteForm = false;
        break;
    }
}

if (isCompleteForm) {
    // do something fun
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

谢谢大家的精彩解决方案!如果您有兴趣,这里是不同解决方案的jsPerf.

http://jsperf.com/check-array-of-keys-for-object

javascript arrays lodash

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

如何使lodash _.replace在字符串中出现?

如何用另一个字符串替换字符串中每个字符串模式的出现?

var text = "azertyazerty";
_.replace(text,"az","qu")
Run Code Online (Sandbox Code Playgroud)

返回 quertyazerty

javascript string lodash

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

使用lodash的isEqual()排除一些属性

我正在使用_.isEqual来比较2个对象数组(例如:每个对象有10个属性),并且它工作正常.

现在有2个属性(创建和删除),我不需要成为比较的一部分.

例:

var obj1 = {name: "James", age: 17, creation: "13-02-2016", deletion: "13-04-2016"}
var obj2 = {name: "Maria", age: 17, creation: "13-02-2016", deletion: "13-04-2016"}

// lodash method...
_.isEqual(firstArray, secondArray)
Run Code Online (Sandbox Code Playgroud)

javascript lodash

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

能用英语解释Lodash Iteratee功能吗?

我想弄清楚Lodash iteratee是如何工作的以及我将在哪里使用它.

文件说:

创建一个函数,该函数使用创建函数的参数调用func.如果func是属性名称,则created函数返回给定元素的属性值.如果func是数组或对象,则创建的函数对包含等效源属性的元素返回true,否则返回false.

这是文档中的一个例子,但是我在绕过这个问题时遇到了一些麻烦.

var users = [
  { 'user': 'barney', 'age': 36, 'active': true },
  { 'user': 'fred',   'age': 40, 'active': false }
];

// The `_.matches` iteratee shorthand.
_.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));
// => [{ 'user': 'barney', 'age': 36, 'active': true }]
Run Code Online (Sandbox Code Playgroud)

lodash

25
推荐指数
1
解决办法
4336
查看次数

如何让Lodash sortBy()对数据进行降序排序?

当我传递“desc”时,当我调用该函数时,Lodash 中的 sortBy() 不会按降序排序const sortedData = _.sortBy(data, ['rawAvgPrice'], ['desc']);。这对于升序来说效果很好。但不是按降序排列。我已经发布了我编写的排序功能。我读了主题“ lodash multi-column sortByscending ”,但它并没有帮助我解决我的问题。因此决定发布此内容。

    /**
     * @param {String} element - sorting object element name.
     * @param {String} dir - the direction of the sort ASC/DESC.
     * @param {Boolean} flag - Signaling to sort the table and update.
     */
    sortTableNew(element, dir, flag) {
      let direction = dir;
      
      // Change the sorting from ASC to DESC/ DESC to ASC
      if (flag) {
        direction = dir === 'asc' ? 'desc' : 'asc'; …
Run Code Online (Sandbox Code Playgroud)

javascript sorting lodash vue.js

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

lodash - 将项目/变换对象转换为键值数组

我将使用forOwn迭代对象的属性并手动创建一个数组,并且无法帮助认为已经有一个oneliner已经可用.

{ 
  prop1 : "value",
  prop2: { sub:1}
}
Run Code Online (Sandbox Code Playgroud)

至:

[ 
   {key: "prop1", value: "value"},
   {key: "prop2", value: {sub:1}}
]
Run Code Online (Sandbox Code Playgroud)

谢谢

javascript lodash

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

如何在React Hook中使用油门或反跳?

我正在尝试throttle在功能组件中使用lodash中的方法,例如:

const App = () => {
  const [value, setValue] = useState(0)
  useEffect(throttle(() => console.log(value), 1000), [value])
  return (
    <button onClick={() => setValue(value + 1)}>{value}</button>
  )
}
Run Code Online (Sandbox Code Playgroud)

由于内部方法useEffect在每次渲染时都会重新声明,因此限制效果不起作用。

有没有人有一个简单的解决方案?

throttling lodash reactjs react-hooks

24
推荐指数
8
解决办法
1万
查看次数