添加删除过滤器一个数组 Javascript



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 是我在添加/删除/获取项目方面苦苦挣扎的根本原因。

欢迎和赞赏任何建议。谢谢!

你可以使用内置的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 函数本身中的项目。

您实际上可以使用适用于数组的本机过滤器方法。它会是这样的:

function findElement(items, elementValue) {
    	let result = items.filter(function(item) {
    		return item.Value === elementValue; 
    	})
    	console.log(result); //should output the desired result
    }

最新更新