var json = { top: ‘400px‘, width: ‘500px‘, height: ‘300px‘ };
var data = {};//在外面定义对象
var datas = [];
for (key in json) {
data.name = key;
datas.push(data);
}
console.log(datas)
然后输出结果:
原因:
也就是说每次循环的时候的时候,都将data.name值给覆盖了,导致最后结果就是data.name值是最后一个数据的值。
解决办法就很简单了:
就是每次循环的时候就建立一个新的对象,
var json = { top: ‘400px‘, width: ‘500px‘, height: ‘300px‘ };
var datas = [];
for (key in json) {
var data = {};//每次循环的时候,新建对象
data.name = key;
datas.push(data);
}
console.log(datas)
看起来很简单吧,但就是这点小问题,会让你一时找不出原因,所以逻辑一定要摆对。
这样之后输出的结果就是你想要的结果了。
//将一个字符串转化为保留两位小数且有千位分隔符的格式;
function moneyFormat(s) {
// 保留两位小数
// 先匹配传参是否含有除了数字和小数点的其他字符
if (/[^0-9\.]/.test(s)) return "invalid value";
// 匹配整个字符串,如果匹配上了,则在字符串末尾加上小数点,否则返回原字符串(说明原字符串带有小数点)
s = s.replace(/^(\d*)$/, "$1.");
// 给字符串末尾增加两个零
s = (s + "00").replace(/(\d*\.\d\d)\d*/, "$1");
// 将小数点替换为“,”
s = s.replace(".", ",");
// 匹配规则——四个数字加上一个“,”
var re = /(\d)(\d{3},)/;
// 循环匹配
while (re.test(s)) {
s = s.replace(re, "$1,$2");
}
// 匹配一个逗号“,”+两个数字
s = s.replace(/,(\d\d)$/, ".$1");
// 如果字符串是以小数点“.”开始,则在开头增加一个‘0’
return s.replace(/^\./, "0.");
}
//将阿拉伯数字转换成中文大写;
function Arabia_To_SimplifiedChinese(Num) {
for (i = Num.length - 1; i >= 0; i--) {
Num = Num.replace(",", ""); //替换Num中的“,”
Num = Num.replace(" ", ""); //替换Num中的空格
}
if (isNaN(Num)) {
//验证输入的字符是否为数字
//alert("请检查小写金额是否正确");
return;
}
//字符处理完毕后开始转换,采用前后两部分分别转换
part = String(Num).split(".");
newchar = "";
//小数点前进行转化
for (i = part[0].length - 1; i >= 0; i--) {
if (part[0].length > 10) {
//alert("位数过大,无法计算");
return "";
} //若数量超过拾亿单位,提示
tmpnewchar = "";
perchar = part[0].charAt(i);
switch (perchar) {
case "0":
tmpnewchar = "零" + tmpnewchar;
break;
case "1":
tmpnewchar = "一" + tmpnewchar;
break;
case "2":
tmpnewchar = "二" + tmpnewchar;
break;
case "3":
tmpnewchar = "三" + tmpnewchar;
break;
case "4":
tmpnewchar = "四" + tmpnewchar;
break;
case "5":
tmpnewchar = "五" + tmpnewchar;
break;
case "6":
tmpnewchar = "六" + tmpnewchar;
break;
case "7":
tmpnewchar = "七" + tmpnewchar;
break;
case "8":
tmpnewchar = "八" + tmpnewchar;
break;
case "9":
tmpnewchar = "九" + tmpnewchar;
break;
}
switch (part[0].length - i - 1) {
case 0:
tmpnewchar = tmpnewchar;
break;
case 1:
if (perchar != 0) tmpnewchar = tmpnewchar + "十";
break;
case 2:
if (perchar != 0) tmpnewchar = tmpnewchar + "百";
break;
case 3:
if (perchar != 0) tmpnewchar = tmpnewchar + "千";
break;
case 4:
tmpnewchar = tmpnewchar + "万";
break;
case 5:
if (perchar != 0) tmpnewchar = tmpnewchar + "十";
break;
case 6:
if (perchar != 0) tmpnewchar = tmpnewchar + "百";
break;
case 7:
if (perchar != 0) tmpnewchar = tmpnewchar + "千";
break;
case 8:
tmpnewchar = tmpnewchar + "亿";
break;
case 9:
tmpnewchar = tmpnewchar + "十";
break;
}
newchar = tmpnewchar + newchar;
}
//替换所有无用汉字,直到没有此类无用的数字为止
while (
newchar.search("零零") != -1 ||
newchar.search("零亿") != -1 ||
newchar.search("亿万") != -1 ||
newchar.search("零万") != -1
) {
newchar = newchar.replace("零亿", "亿");
newchar = newchar.replace("亿万", "亿");
newchar = newchar.replace("零万", "万");
newchar = newchar.replace("零零", "零");
}
//替换以“一十”开头的,为“十”
if (newchar.indexOf("一十") == 0) {
newchar = newchar.substr(1);
}
//替换以“零”结尾的,为“”
if (newchar.lastIndexOf("零") == newchar.length - 1) {
newchar = newchar.substr(0, newchar.length - 1);
}
return newchar;
}
//保留n位进行四舍五入
function getFloat(number, n) {
n = n ? parseInt(n) : 0;
if (n <= 0) return Math.round(number);
number = Math.round(number * Math.pow(10, n)) / Math.pow(10, n);
return number;
};
原文:https://www.cnblogs.com/sylei/p/14784779.html