对JS对象的所有成员执行操作

时间:2016-01-28 13:33:00

标签: javascript jquery angularjs

我有像

这样的js对象
test

我想将所有Object {id: 1, name: "Grain", Price: 26.0, DM: 2.0} float values分开。任何帮助将不胜感激

6 个答案:

答案 0 :(得分:2)

遍历对象并检查浮点值。然后分开:

14.2

请注意:

  • 上述内容当然会匹配14.0而非14!isNaN(n)
  • 对于没有小数位的浮动,请使用n === Number(n) && n % 1 !== 0代替14.2。但这也会匹配整数。 (将匹配14.014!isNaN(n) && n.toString().indexOf('.')
  • 如果您只想匹配浮动,打印为浮点数,请使用:14.2。 (将匹配14.014和非$.each(..)
  • 当然,您也可以使用SELECT product_id, product_property_id, SUM(CASE WHEN [type] = 1 THEN amount END) - SUM(CASE WHEN [type] = 0 THEN amount END) new_amount FROM dbo.YourTable WHERE product_id = 145 AND product_property_id = 4 GROUP BY product_id, product_property_id; 遍历。

答案 1 :(得分:1)

您可以使用jQuery方法$.each遍历对象的所有字段:

var obj = { id: 1, name: "Grain", Price: 26.0, DM: 2.0 };

$.each(obj, function(i, el) {
    var floatValue = parseFloat(el);

    if(i != "id" && !isNaN(floatValue) && floatValue % 1 !== 0) {
        console.log(floatValue);
    }
});

console.log替换为您的代码。

答案 2 :(得分:1)

请仔细阅读此代码:

[[1, 1, 1], [2, 3, 1, 2], [1, 1, 1, 1, 10, 3]]
[[1, 4, 1], [2, 3, 1, 5], [1, 1, 1, 1, 10, 6]]
[[1, 9, 1], [2, 3, 1, 8], [1, 1, 1, 1, 10, 7]]

然后最后你的 newObj 根据你的想法得到结果......

答案 3 :(得分:0)

  1. 使用for循环迭代数组。
  2. 使用===运算符检查对象是否为'number'
  3. 类型
  4. 使用%1 == 0检查数字是浮点数还是整数。
  5. 将浮动除以2

答案 4 :(得分:0)

我建议使用带有浮点值的属性键的数组,如此

floatKeys = ['Price', 'DM'];

并迭代可能的数组和键。



var array = [{ id: 1, name: "Grain", Price: 26.0, DM: 2.0 }],
    floatKeys = ['Price', 'DM'];

array.forEach(function (a) {
    floatKeys.forEach(function (k) {
        a[k] /= 2;
    });
});

document.write('<pre>' + JSON.stringify(array, 0, 4) + '</pre>');
&#13;
&#13;
&#13;

答案 5 :(得分:0)

jQuery是你的朋友:

var obj = {id: 1, name: "Grain", Price: 26.0, DM: 2.0}
$.each(obj, function (key, value) {
    if ($.isNumeric(value) && !Number.isInteger(value)) {
        obj[key] /= 2;
    }
});

会解释Price:&#34; 34.2&#34;虽然也是浮动..