相关疑难解决方法(0)

检查Javascript对象数组中是否存在对象值,如果没有向数组添加新对象

如果我有以下对象数组:

[ { id: 1, username: 'fred' }, { id: 2, username: 'bill' }, { id: 2, username: 'ted' } ]
Run Code Online (Sandbox Code Playgroud)

有没有办法循环遍历数组,以检查特定的用户名值是否已经存在,如果它什么都不做,但是如果它没有用所述用户名(和新的ID)将新对象添加到数组?

谢谢!

javascript arrays foreach for-loop object

109
推荐指数
7
解决办法
19万
查看次数

javascript上find()和filter().shift()之间的区别

我最近开始放弃下划线/ lodash过度使用(部分)我的项目并意识到浏览器中没有完全支持find方法.ES6方法查找和使用.shift()与过滤器结果之间的区别是什么

var user = users.find(function() { ... } );
Run Code Online (Sandbox Code Playgroud)

要么

var user = users.filter(function() { ... } ).shift();
Run Code Online (Sandbox Code Playgroud)

我认为对"find"方法有明显的优化(停止迭代拳头匹配),但是我可以使用第二种方法得到意想不到的结果吗?我应该使用polyfill吗?为什么?

javascript ecmascript-6

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

Javascript 更新数组值(如果存在),否则将新数组推送到对象

我试图更新数组中的值(如果找到),如果没有,则向其中添加一个新数组。

这是我一直在尝试的一些代码:

var cartItems = {};
var items = []
cartItems.items = items;
$('.proAdd').click(function(){
var name = $(this).attr("data-name");
var price = parseFloat($(this).attr("data-price"));
var quantity = parseInt($(this).attr("data-quantity"));

var item = {"name": name,"price": price,"quantity": quantity}

items.forEach(function(item) {
if (item.name === name) {
item.quantity = 2
return; 
}else{
cartItems.items.push(item);
}
});
Run Code Online (Sandbox Code Playgroud)

在此版本中,注释被推送。如果我取出 else 分支,那么它会更新它,但也会推送它。我为此创建了一个小提琴。

也尝试过这个,但它说 x.quantity 未定义:

var index = items.findIndex(x => x.name==name)
if (index != -1){
x.quantity = 2
}
else {
cartItems.items.push(item);
}
Run Code Online (Sandbox Code Playgroud)

javascript jquery multidimensional-array array-push

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