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')
仍然给我与以前相同的输出。
任何提示?我是否错误地使用了操作员?
答案 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;
}