这应该是一个简单的,但我今天有一个大脑屁。 所以..
var cat = {
name: 'catcat',
age: 6,
color:'brown'
}
我想返回一个只有数字得到平方的对象。到目前为止,我有..
function squareNumValues(object) {
var newObj = {};
if (object[key] = number)
for (var key in object) {
newObj.push(Math.pow(object[key],2));
}
return newObj;
}
所以我希望这个新对象看起来像这样:
var cat = {
name: 'catcat',
age: 36,
color:'brown'
}
我在第3行 if(object [key])= number,我知道这是不正确的,但我觉得我在正确的道路上。有什么建议?谢谢!
编辑:我也应该在这里使用typeof运算符。
答案 0 :(得分:2)
检查
旁边newObj[key] = ... // property accessor with brackets and a variable
newObj['name'] = ... // property accessor with brackets and a string
newObj.name = ... // property accessor with dot, same as above
你需要对该对象进行另一个赋值,因为对象通过直接赋值给属性来获取它们的属性,比如
push
而不是newObj[key] = Math.pow(object[key], 2);
,这是一种数组方法。
function squareNumValues(object) {
var newObj = {};
for (var key in object) {
if (typeof object[key] === 'number') {
newObj[key] = Math.pow(object[key], 2);
} else {
newObj[key] = object[key];
}
}
return newObj;
}
var cat = {
name: 'catcat',
age: 6,
color: 'brown'
};
console.log(squareNumValues(cat));
?:
包含Object.keys
和Array#forEach
以及conditional operator function squareNumValues(object) {
var newObj = {};
Object.keys(object).forEach(function (k) {
newObj[k] = typeof object[k] === 'number' ?
Math.pow(object[k], 2) :
object[k];
});
return newObj;
}
var cat = { name: 'catcat', age: 6, color: 'brown' };
console.log(squareNumValues(cat));
的压缩版。
{{1}}
答案 1 :(得分:0)
您还可以使用名为 isNaN()的函数(不是数字)来确定给定值是否为数字。