使用数组方法向新数组添加项



数据测试有困难,不能让我的函数返回完整的新数组(它在第一个项目停止)

这是我的函数要测试的对象:

it("should list out all of the order items by name", function() {
var order1 = {
orderNumber: 1,
item: "burger",
price: "8.99",
orderType: "delivery",
status: "accepted"
};
var order2 = {
orderNumber: 2,
item: "blt sandwich",
price: "5.99",
orderType: "delivery",
status: "accepted"
};
var order3 = {
orderNumber: 3,
item: "rueben",
price: "8.99",
orderType: "delivery",
status: "accepted"
};
var deliveryOrders = [order1, order2, order3];
var items = listItems(deliveryOrders);
assert.deepEqual(items, "burger, blt sandwich, rueben");
}); 

这是我的功能。我想我需要一个不同的数组方法来返回新的数组(使用'concat'此刻)。

这是我的终端返回的错误信息:

  1. order.js
    listOrders
    应该按名称列出所有订单项:
    AssertionError: expected 1深度等于'burger, blt sandwich, rueben'
function listItems(deliveryOrders) {
var itemList = [];
for (var i = 0; i < deliveryOrders.length; i++) {
return itemList.push(deliveryOrders[i].item);
}
itemList.concat(deliveryOrders[i].item);
}

函数listtitems有一个简单的错误,您正在将对象推入数组并返回它,一旦函数执行第一次推入,它就返回。因此,for循环中的下一个迭代不会发生。你能做的是-对于循环中的每次迭代,将对象推入数组。-一旦所有对象都被推入数组,循环将停止执行-现在你有一个包含所有对象的数组-simple从函数返回数组。

let itemList =[];
function listItems(deliveryOrders){
for(let i=0;i<deliveryOrders.length;i++){
itemList.push(deliveryOrders[i].item);
}
return itemList;
}

试试代码。谢谢。

在for循环的第一次迭代后返回函数listtitems,而应该是:

function listItems(deliveryOrders) {
var itemList = [];
for (var i = 0; i < deliveryOrders.length; i++) {
itemList.push(deliveryOrders[i].item);
}
return itemList;
}

最新更新