计算数组中的元素,将它们添加到数组中的2个对象

时间:2016-10-10 18:18:15

标签: javascript arrays object

var arr = ['cat','cat','dog','penguin','chicken','chicken']

function orgAnimals(input)
   var obj = {};
   for (var i = 0 ; i < input.length; i++) {
      obj[input[i]] = obj[input[i]] || 0;
      obj[input[i]]++
   }
return obj;
}

所以这给了我{cat:2,dog:1,penguin:1,chicken:2,}

我想将对象拆分为2个不同的对象并将其放入数组中,使其看起来像

[{cat:2, dog:1} {penguin:1, chicken:2 }]

我尝试了if声明来完成这项工作,但事实并非如此。 if (input[i]==='cat'||'dog')仍然给我与以前相同的输出。

任何提示?我是否错误地使用了操作员?

2 个答案:

答案 0 :(得分:2)

高尔夫时间,我想

var arr = ['cat','cat','dog','penguin','chicken','chicken']

function orgAnimals(input) {
    return input.reduce((a, b) => {
    	var i = ['cat','dog'].indexOf(b) === -1 ? 1 : 0;
      	return b in a[i] ? a[i][b]++ : a[i][b] = 1, a
    }, [{},{}]);
}

console.log( orgAnimals(arr) );

相同的逻辑,但更具可读性,您可以检查迭代值是cat还是dog并根据条件插入到数组中

var arr = ['cat', 'cat', 'dog', 'penguin', 'chicken', 'chicken']

function orgAnimals(input) {
    var arr = [{}, {}];
    
    for (var i = 0; i < input.length; i++) {
    
        if ( input[i] === 'dog' || input[i] === 'cat') {
        	if ( input[i] in arr[0] ) {
            	arr[0][ input[i] ] = arr[0][ input[i] ] + 1;
            } else {
            	arr[0][ input[i] ] = 1;
            }
        } else {
        	if ( input[i] in arr[1] ) {
            	arr[1][ input[i] ] = arr[1][ input[i] ] + 1;
            } else {
            	arr[1][ input[i] ] = 1;
            }
        }
    }
    return arr;
}

console.log( orgAnimals(arr) )

答案 1 :(得分:0)

您可能希望创建2个单独的对象,然后在return语句中将它们组合在一起。所以像这样:

function swapT()
{
  var obj1 = document.getElementById('p1');
  var obj2 = document.getElementById('p2');

  var temp = obj1.innerHTML;
  obj1.innerHTML = obj2.innerHTML;
  obj2.innerHTML = temp;    
}