我的数据如下:
var data = {status: "OK", address11: 0.2, address12: 0.3}
我想要这个字符串:
转移成功!您转移了:0.2到地址11,0.3到地址12
我该如何有效地做到这一点?
我有这个:
var a = 'Transfer Successful! You transferred:'
for (const key of Object.keys(data)) {a.concat(`${data[key]} to ${key}`)}
但它只附加了最后一个键/值对。
答案 0 :(得分:1)
只需使用+=
运算符即可将字符串附加到另一个运算符。
此外,您必须从对象中删除第一个键。为此,您可以使用适用于slice
数组的key's
方法。
keys = Object.keys(data).slice(1);
使用+=
提高效果,因为它比concat
快。
MDN 有以下关于string.concat()
的说法:
强烈建议使用字符串连接运算符 (+,+ =)而不是出于性能原因的方法
var data = {status: "OK", address11: 0.2, address12: 0.3}
var a = 'Transfer Successful! You transferred:';
keys = Object.keys(data).slice(1);
for (const key of keys) {a +=` ${data[key]} to ${key}`}
console.log(a);

答案 1 :(得分:1)
您需要将此a.concat('${data[key]} to ${key}'
存储到变量a
a = a.concat(`${data[key]} to ${key}`
并避开密钥status
var data = {
status: "OK",
address11: 0.2,
address12: 0.3
}
var a = 'Transfer Successful! You transferred: ';
for (const key of Object.keys(data)) {
if (key === 'status') continue
a = a.concat(`${data[key]} to ${key} `)
}
console.log(a)
答案 2 :(得分:1)
我会以不同的方式设置您的数据对象,因此您不必依赖于属性名称,以便知道它的状态是什么"或一些转移地址。将传输存储在一个数组中也可以保证它们的顺序,这可能是也可能不重要。
MyDataGridView.Columns.Add(myCheckBoxColumn);

答案 3 :(得分:0)
你可以用一个循环来完成:
var txt = 'Transfer Successful! You transferred';
var first = true;
for (var key in data) {
if (key !== "status") {
first ? (first = false) : (txt += ", ");
txt += data[key] + " " + key;
}
}