0

我想迭代这个对象中的数组:

obj = {'2012-01-01':[1,2,5,8]}

我知道我们可以这样迭代:

   for(var i = 0;i < obj.length;i++){
    obj['2012-08-08'][i]
    }

但是如果不知道键名我们如何迭代数组呢?

假设我有一个循环:

_.each(dates, function(date){
     //each date is like the above javascript object, how to  iterate the array?

})
4

3 回答 3

1

使用_.keys助手:

var obj = {'2012-01-01':[1,2,5,8]};

_.each(_.keys(obj), function(date) {

    console.log(date);
    // 2012-01-01

    console.log(obj[date]);
    // [1,2,5,8]
});
于 2013-06-11T05:07:03.627 回答
1
for(property in obj) { 
  if( Object.prototype.toString.call(property) === '[object Array]' ) {
         //property is array 
     }
 }
于 2013-06-11T05:08:45.290 回答
0

如果您有两个对象数组,并且您想“对齐”这些对象数组,以便确保每个数组的对象与另一个数组的顺序相同,该怎么办?如果您不知道数组中的任何对象包含哪些键和值怎么办......更不用说它们的顺序是什么了?

因此,您的 , 等需要一个“通配符表达式” [].filter[].map如何获得通配符表达式?

var jux = (function(){
    'use strict';

    function wildExp(obj){
        var keysCrude = Object.keys(obj),
            keysA = ('a["' + keysCrude.join('"], a["') + '"]').split(', '),
            keysB = ('b["' + keysCrude.join('"], b["') + '"]').split(', '),
            keys = [].concat(keysA, keysB)
                .sort(function(a, b){  return a.substring(1, a.length) > b.substring(1, b.length); });
        var exp = keys.join('').split(']b').join('] > b').split(']a').join('] || a');
        return exp;
    }

    return {
        sort: wildExp
    };

})();

var sortKeys = {
    k: 'v',
    key: 'val',
    n: 'p',
    name: 'param'
};
var objArray = [
    {
        k: 'z',
        key: 'g',
        n: 'a',
        name: 'b'
    },
    {
        k: 'y',
        key: 'h',
        n: 'b',
        name: 't'
    },
    {
        k: 'x',
        key: 'o',
        n: 'a',
        name: 'c'
    }
];
var exp = jux.sort(sortKeys);

console.log('@juxSort Expression:', exp);
console.log('@juxSort:', objArray.sort(function(a, b){
    return eval(exp);
}));

您还可以在每个对象的迭代中使用此函数来为每个对象中的所有键创建更好的集体表达式,然后以这种方式过滤您的数组。

这是我几乎完成的 API Juxtapose 的一个小片段,它做到了这一点,对象相等与豁免、对象统一和数组压缩。如果这些是您的项目需要或想要的东西,请发表评论,我会尽快使该库可访问。

希望这可以帮助!快乐编码:)

于 2013-11-09T06:02:30.210 回答