gpt4 book ai didi

javascript - 是否有一种 DRY(er) 方法将项目添加到数组中?

转载 作者:行者123 更新时间:2023-11-28 13:27:51 24 4
gpt4 key购买 nike

我有一段可以正常工作的代码片段。然而,我觉得它有点渴望它所做的事情,而且我觉得我重复了很多次自己。这是一个验证片段,用于检查表单中的所有输入字段,并在提交后显示一条错误消息,其中包含您缺少的内容(如果有)。

$scope.save = function() {
var post = new FormData();
post.append("title", $scope.post.title);
post.append("photo", $scope.photo);
post.append("body", $scope.post.body);
post.append("truncBody", $scope.post.truncBody);

if(!$scope.post.title || !$scope.photo || !$scope.post.body || !$scope.post.truncBody){
var thingsLeft= [];
if(!$scope.post.title){
thingsLeft.push(" Title");
}
if(!$scope.photo){
thingsLeft.push(" Cover Image")
}
if(!$scope.post.body){
thingsLeft.push(" Body");
}
if(!$scope.post.truncBody){
thingsLeft.push(" Summary");
}

Messages.error("Please fill out all fields. Fields left:" + thingsLeft);
return;
}else{
post to server
}
}

同样,这工作完美,没有错误,客户端看起来很棒。我想知道的是是否有更好/更短/更干的写法。

最佳答案

如果您确实有很多此类代码,您可以编写一个辅助函数:

function pushIf(array) {
for (var i = 1; i < arguments.length; i += 2)
if (arguments[i]) array.push(arguments[i + 1]);
}

然后

pushIf(thingsLeft,
!$scope.post.title, " Title ",
!$scope.photo, " Cover Image ",
!$scope.post.body, " Body",
!$scope.post.truncBody, " Summary"
);

关于javascript - 是否有一种 DRY(er) 方法将项目添加到数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27713351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com