拼接数组的Javascript只是替换值而不是删除它
Javascript splicing an array just replaces the value instead of removing it
我有一个包含菜肴列表的菜单。 我希望能够从菜单中删除菜肴,我通过在菜单数组中拼接菜肴 ID 的索引来解决这个问题。但它不是删除值并缩短数组,而是将值替换为数组中的最后一个值。
在包含 4道菜的菜单中,删除其中 3 道菜后,数组仍然包含 4 个值,它们都是一样的。
$scope.fjernRet = function(ret, menu) {
//console.log(ret._id)
var index = menu.retter.indexOf(ret._id);
if (index > -1) {
menu.retter.splice(index, 1)
}
menuService.update(menu);
socket.syncUpdates('menu', $scope.menuer);
}
menu.retter
看起来像
[{
_id: '56e827ba0ec7a8d02bf7747d',
name: 'test',
info: 'testinfo',
type: 'kød',
active: true
}, {
_id: '56e827ba0ec7a8d02bf77473',
name: 'test3',
info: 'testinfo3',
type: 'kød',
active: true
}, {
_id: '56e827ba0ec7a8d02bf77474',
name: 'test4',
info: 'testinfo4',
type: 'salat',
active: false
}];
替换此行:
var index = menu.retter.indexOf(ret._id);
通过这个:
var index = menu.retter.map(function(x){
return x._id
}).indexOf(ret._id);
Array.map()
将返回一个只有_id
的映射数组,然后你的.indexOf()
就可以工作了。
希望对您有所帮助。
相关文章:
- Javascript匹配以从URL中删除部分文件名-替换最后一次出现的内容
- 可以't删除“;C: fakepath "使用javascript替换和regex
- 如何删除重复的选定项目并替换为数量
- 使用替换函数删除 Javascript 中元素的类
- 使用正则表达式删除所有 html 属性(替换)
- jQuery:裁剪以删除图像数据并替换为新数据
- 如何将删除标记替换为输入类型文本
- 为什么javascript替换方法(没有regex)在angularjs表达式中不起作用来删除 
- 为什么不用特殊字符替换选择文本,以及如何删除此特殊字符
- 使用Javascript替换函数从字符串中删除€Symbol
- Chained或Dependent选择Zend_Form jQuery以删除或替换表单元素
- 如何使用jquery删除和替换select选项
- 拼接数组的Javascript只是替换值而不是删除它
- 替换/删除数组中的空条目
- 正则表达式 - 替换方法从字符串中删除运算符产生不希望的结果
- 替换/删除两个字符之间的所有内容
- 字符串替换或通过数组删除
- PHP:如何删除/替换特定的href属性值
- 为html元素添加/删除/替换类
- 如何从客户端浏览器中删除/替换缓存的css和js文件