如何将表达式仅应用于数字而不是字符串

时间:2016-10-02 21:55:09

标签: javascript javascript-objects

这应该是一个简单的,但我今天有一个大脑屁。 所以..

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运算符。

2 个答案:

答案 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.keysArray#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()的函数(不是数字)来确定给定值是否为数字。