我是javascript的新手,并且一直在阅读雄辩的javascript。我正在尝试制作一个功能,用于存储商品,价格以及是否有售的条目。我似乎无法复制Eloquent Javascript的作者所做的一些事情。我想将其他参数添加到适当的属性中,但我似乎无法添加到对象属性中。我不知道自己做错了什么。我试着按照作者的代码,但它并没有发生在我身上。
var itemList = [];
function addEntry(item){
var entry = {item: item, price: [], sale: []};
for(var i = 0; i < arguments.list; i++){
if(typeof arguments[i] == boolean)
entry.sale.push(arguments[i]);
else
entry.price.push(arguments[i]);
};
console.log(entry);
}
addEntry('couch', '$500', true)
我也尝试改变下面的代码,在每次循环迭代时创建一个新属性,但我也不能这样做。我完全清楚,我很可能会遗漏一些关键代码或犯一个容易犯的错误,但我对此视而不见。请帮帮我。即使代码似乎适合您,请告诉我。
var itemList = [];
function addEntry(item){
var entry = {item: item};
for(var i = 0; i < arguments.list; i++){
if(typeof arguments[i] == boolean)
entry.sale = arguments[i];
else
entry.price arguments[i];
};
console.log(entry);
}
addEntry('couch', '$500', true)
答案 0 :(得分:2)
您的代码中存在一些拼写错误。请参阅更新代码中的以下注释:
var itemList = [];
function addEntry(item){
var entry = {item: item};
for(var i = 0; i < arguments.length; i++){ // Use argument.length to specify upper bound of the loop
if(typeof arguments[i] == 'boolean') // typeof returns a string, so use 'boolean'
entry.sale = arguments[i];
else
entry.price = arguments[i];
};
console.log(entry);
itemList.push(entry); // Have you forgotten to add it to the list?
}
addEntry('couch', '$500', true)
答案 1 :(得分:0)
list
的方法/属性。使用.length
。typeof arguments[i]
返回一个字符串,使用== 'boolean'
。for
运行1..n
循环,因为0th
参数已被指定为item
。答案 2 :(得分:0)
你必须循环通过参数列表,如下所示。此外,如果您将项目设为数组,则可以容纳多个项目,就像多个价目表一样。所以你可以打电话给
addEntry('couch', '$100', true);
addEntry('couch', '$100', true, 'chair', '$50', false);
function addEntry(){
var entry = {item: [], price: [], sale: []};
for(var i = 0; i < arguments.length; i++){
if(typeof arguments[i] == 'boolean')
entry.sale.push(arguments[i]);
else if (!isNaN(arguments[i].replace('$','')))
{
entry.price.push(arguments[i]);
}
else
entry.item.push(arguments[i]);
}
console.log(entry);
}