如何按值而不是索引来定位jQuery对象

时间:2015-05-21 07:21:19

标签: jquery arrays object

这是我的一些代码:

var fashion = [];

/* LEVEL 1 CATEGORIES */
fashion.push({ level1 : 'Mens', inner:[] });
fashion.push({ level1 : 'Womens', inner:[] });

我尝试将值推送到inner数组,仅适用于Mens类别。 我可以写:

/* LEVEL 2 CATEGORIES */
fashion[0].inner.push({ level2 : 'Shoes' });
fashion[0].inner.push({ level2 : 'Accessories'});

但我希望将目标不是指数0 ,而是通过“男性”值。 有没有办法做到这一点? 所以它变成了:

fashion['Mens'].inner.push({ level2 : 'Shoes'});

但是这种语法错了。

4 个答案:

答案 0 :(得分:1)

您的代码中没有jQuery对象。 jQuery对象是jQuery构造函数($())返回的对象。你有一个简单的JavaScript对象数组。要过滤数组元素,可以使用Array.prototype.filter方法:

fashion.filter(function(el) {
   return el.level1 === 'Mens';
})[0].inner.push({ level2 : 'Shoes' });

filter返回匹配元素的数组。因此,您应该遍历返回的数组(使用Array.prototype.forEach方法)或使用括号表示法通过索引获取目标对象。应该注意的是filter将返回一个没有匹配元素的空数组,因此在使用括号表示法之前最好检查返回数组的length属性。

答案 1 :(得分:0)

你可以使用jquery每个循环

$.each(fashion, function( index, value ) {
  if(value.level1 === 'Mens') {  // specify your condition 
     value.inner.push({ level2 : 'Shoes' });
     // your code to push value
}
});

答案 2 :(得分:0)

使用javascript curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://laravel.dev/users循环。

for

检查DEMO

答案 3 :(得分:0)

另一个简单的解决方案是将时尚和内心改变为对象:

var fashion = {};

/* LEVEL 1 CATEGORIES */
fashion.Mens.inner = {};
fashion.Womens.inner = {};

/* LEVEL 2 CATEGORIES */
fashion.Mens.inner.Shoes = [];
fashion.Mens.inner.Accessories = [];