84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
数组中的数组products_mes[a]是对象 用indexOf()方法报错 有什么好的方法解决这个问题?
$scope.addCount=function(c,a){ var arr = []; var obj=$scope.products_mes[a]; console.log(obj); c=c+1; };
认证高级PHP讲师
没搞明白是要干嘛如果是数组要判断是否包含某元素 那就 arr.indexOf(item)如果是对象要判断是否包含某属性 那就 obj.xxx 或者 obj[xxx] 是否为空就行了var obj = {name:"老王",id:1}; obj.name // "老王"obj.age // undefined
首先你这个问题,不太明确。我尝试去理解你的问题products_mes[a]里面判断c是否存在 ?要判断一个object 里面是否包含某个c 这里需要确定你是查询key,还是value.假定是判断key,那么你可以使用
products_mes[a]
c
Object.keys(products_mes[a]).indexOf(c)
如果你要判断value,那么因为Object.values 还是个提案,所以你可以用替代方法把Object 里面的 value 提取成数组,你可以试试用underscore.js 的where函数来返回一个值的结果集
Object.values
underscore.js
_.where({a:1,b:2,c:3}) // [1,2,3]
这样你就可以继续使用indexOf(c)了。。
。。。。。。。。
我有个疑问,既然 a (命名方式不敢恭维) 是表示数组下标,那么:
a
++$scope.products_mes[a].count;
就行,为何还要 indexOf 多此一举。
indexOf
另,关于 indexOf 前面已经有人解读个大概了,可以通过:
angular.forEach($scope.products_mes, function(data, index) { // 判断条件 });
当然这一步是多余了,因为你的参数中已经知道下标了。
没搞明白是要干嘛
如果是数组要判断是否包含某元素 那就 arr.indexOf(item)
如果是对象要判断是否包含某属性 那就 obj.xxx 或者 obj[xxx] 是否为空就行了
var obj = {name:"老王",id:1};
obj.name // "老王"
obj.age // undefined
首先你这个问题,不太明确。
我尝试去理解你的问题
products_mes[a]
里面判断c
是否存在 ?要判断一个object 里面是否包含某个
c
这里需要确定你是查询key,还是value.假定是判断key,那么你可以使用
如果你要判断value,那么因为
Object.values
还是个提案,所以你可以用替代方法把Object 里面的 value 提取成数组,你可以试试用underscore.js
的where函数来返回一个值的结果集这样你就可以继续使用indexOf(c)了。。
。。。。。。。。
我有个疑问,既然
a
(命名方式不敢恭维) 是表示数组下标,那么:就行,为何还要
indexOf
多此一举。另,关于 indexOf 前面已经有人解读个大概了,可以通过:
当然这一步是多余了,因为你的参数中已经知道下标了。