数组中的数组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 前面已经有人解读个大概了,可以通过:
当然这一步是多余了,因为你的参数中已经知道下标了。