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')
仍然给我提供与以前相同的输出。
有什么提示吗?我是否错误地使用了运算符?
最佳答案
我想是高尔夫时间
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) )
关于javascript - 计算数组中的元素,并将它们添加到数组中的 2 个对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39964380/