我有一个看起来像这样的对象:
obj = { apples: 2, eggs: 4, potato: 1 }
我想返回一个像这样的字符串:I have 2 apples, 4 eggs, 1 potato
。
我尝试了以下操作:
arr = [];
obj = { apples: 2, eggs: 4, potato: 1 };
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
arr.push(`${obj[key]} ${key}`)
}
}
console.log(arr);
for (i=0; i<arr.length; i++) {
console.log(`I have ${arr[i]}`)
}
我不知道如何将它们放在一起
答案 0 :(得分:2)
您使用Object.keys()
,ES2015 template literals和join
这样的方法:
let obj = { apples: 2, eggs: 4, potato: 1 };
let es6Output = `I have ${Object.keys(obj).map(key => `${obj[key]} ${key}`).join(', ')}`;
// if your browser doesn't support ES2015
let es5Output = "I have " + Object.keys(obj).map(function(key) {
return obj[key] + " " + key
}).join(', ');
console.log(es6Output);
console.log(es5Output);
答案 1 :(得分:0)
您可以使用Object.keys(obj)
获取对象的所有属性。
然后,您可以使用[]
语法来获取该属性的值。
let obj = { apples: 2, eggs: 4, potato: 1 };
let message = "I have ";
Object.keys(obj).forEach(function (key) {
message += obj[key] + " " + key + ", ";
});
message = message.substring(0, message.length - 2) + ".";
console.log(message);
答案 2 :(得分:0)
您有一些可用的选择。 JavaScript中的字符串可以与+
运算符组合。
console.log("This " + "is a sentence.")
要访问对象中的键,可以使用点符号:
console.log({eggs: 4}.eggs)
或括号符号:
console.log({eggs: 4}['eggs'])
因此,要创建您的字符串,您可以始终使用相同的结构
var obj = { apples: 2, eggs: 4, potato: 1 }
console.log('I have ' + obj.apples + ' apples, ' + obj.eggs + ' eggs, ' + obj.potato + ' potato.';
或者顺序无关紧要,您可以使用循环:
var str = 'I have', i = 0, foods = { apples: 2, eggs: 4, potatoes: 1 }, count, item;
for(item in foods){
count = foods[item];
str = str + (i ? ', ' : (i++ && '')) + count + ' ' + item;
}
console.log(str.replace(', '+ count + ' ' + item, (i > 2 ? ', ' : ' ') + 'and ' + count + ' ' + item + '.'))
答案 3 :(得分:0)
您可以像这样使用Object.keys:
var obj = {
apples: 2,
eggs: 4,
potato: 1
};
var string = "I have ";
Object.keys(obj).forEach(prop => string += `${obj[prop]} ${prop}, `;);
console.log(string);
答案 4 :(得分:0)
如果您使用for in方法访问对象中的每个属性,则该属性已经是字符串。
由于所有属性的值都是数字,所以您要做的就是将这些值从数字转换为字符串,请参见下文。
obj = { apples: 2, eggs: 4, potato: 1 }
for (let propa in obj) {
console.log(`I have ${obj[propa]} ${propa.toString()}`)
}
要使其按照您的方式工作,应如下所示:
obj = { apples: 2, eggs: 4, potato: 1 }
let collection = []
for (let propa in obj) {
collection.push(`I have ${obj[propa]} ${propa}`)
}
答案 5 :(得分:0)
我刚把这个作为解决方案。其中 hudlesList 列表对象是这样的 {name: "hock", account_folder_id: 354421}
this.huddlesList.forEach((e) => {
this.huddlesListWComma +=e.name;
this.huddlesListWComma +=', ';
})
this.huddlesListWComma = this.huddlesListWComma.replace(/,\s*$/, "");
this.huddlesListWComma
hock, Ali Amjad - 1, Ali Amjad - 2, Ash Leo, ZXCVBNM1212312, Jane Roe, H11, Assess JV, Test 3/1/21 - Assessment Safari, Ash Leo - 6
答案 6 :(得分:-1)
这应该为您解决问题。
let obj = { apples: 2, eggs: 4, potato: 1 }
let string = "I have " + obj.apples.toString() + " apples, " + obj.eggs.toString() + " eggs, " + obj.potato.toString() + " potato.";
console.log(string);
答案 7 :(得分:-1)
这应该对您有用...
$(function(){
obj = { apples: 2, eggs: 4, potato: 1 }
var str = "I Have ";
$.each(obj, function(index){
str = str + index + " " + this + " , ";
});
alert(str);
});
答案 8 :(得分:-1)
这是应该如何工作的:
var food = {apples:2, eggs:4, potato:1};
alert(food["apples"]);