1)我正在寻找内置的jquery函数,它们可以添加/删除/从数组中获取项目。 或者更好的方式来做我在下面做的同样的事情。虽然下面的代码有效,但我觉得应该有更好的方法。
我不擅长JavaScript,所以这段代码可能看起来很糟糕:)
var items =
[
{"Selected": false, "Text": "FirstElement", "Value": "1"},
{"Selected": false, "Text": "SecondElement", "Value": "2"},
{"Selected": false, "Text": "ThirdElement", "Value": "3"},
{"Selected": false, "Text": "FourthElement", "Value": "4"}
]
function findItem(items, elementValue) {
var item = {};
if(elementValue == undefined || elementValue =="")
return item;
var i = $.map(items, function(n,i) { return i; }).length;
while(i--){
var temp = items[i].Value;
if(elementValue == items[i].Value){
item = {"Text": items[i].Text, "Value": items[i].Value};
}
}
return item;
}
function removeItem(items, elementValue) {
if(elementValue == undefined || elementValue =="")
return items;
var result = $.grep(items, function(e){
return e.Value != elementValue;
});
return result;
}
function addItem(items, elementValue, elementText) {
if(elementValue == undefined || elementValue =="")
return items;
var i = $.map(items, function(n,i) { return i; }).length;
var x = i;
var valueExists = false;
while(i--){
var temp = items[i].Value;
if(elementValue == items[i].Value){
valueExists = true;
}
}
if(!valueExists){
items[x] = {"Selected": false, "Value": elementValue, "Text": elementText};
}
//I also need some sorting here on Value
return items;
}
2)我正在使用
var tempItems = Object.assign({}, addItem(items, elementValue, elementText))
添加项目之后,我希望在不同的临时对象中引用,因为我必须使用主列表和筛选列表。有没有办法可以添加项目并获取返回项目的另一个实例。
可能是Object.assign是我在添加/删除/获取项目时遇到的根本原因。
欢迎并赞赏任何建议。谢谢!
答案 0 :(得分:0)
您可以使用内置的javascript函数(不是jquery :):
// Finding an item
items.find(function(item) { return item.Value == '3'})
// Removing/filtering out an item (returns a new copy)
items.filter(function(item) { return item.Value !== '3'})
要返回addItem的新副本,您可以使用Object.assign({},...)复制addItems函数内的项目。
答案 1 :(得分:0)
您实际上可以使用适用于数组的本机过滤器方法。它会是这样的:
function findElement(items, elementValue) {
let result = items.filter(function(item) {
return item.Value === elementValue;
})
console.log(result); //should output the desired result
}