如果没有重复值,则将项目推送到新数组。

问题描述 投票:-3回答:3

我从这个数组中得到了名字。有两次返回的重复名称(例如:“Kenny”),我只想将其推入新数组一次。我有点迷失在这个过程中。这是我到目前为止所做的。

var newArr = [];



$.ajax({
    url: 'https://spreadsheets.google.com/feeds/list//od6/public/values?alt=json',
    success: function(data){
        var entryPoint = data.feed.entry;
        // data.feed.entry entry to arrays 
        for (i = 0; i < entryPoint.length; i++){
            var fName = entryPoint[i].gsx$firstname.$t;
            var lName = entryPoint[i].gsx$lastname.$t;
            var email = entryPoint[i].gsx$email.$t;
            var total = entryPoint[i].gsx$totalordered.$t;


            newArr.push(fName)

        }

    }


})
javascript jquery arrays ajax
3个回答
1
投票

用这个:

var newArr = [];
var found;

$.ajax({
url: 'https://spreadsheets.google.com/feeds/list//od6/public/values?alt=json',
success: function(data)
{
    var entryPoint = data.feed.entry;
    // data.feed.entry entry to arrays

    for (i = 0; i < entryPoint.length; i++)
    {
        var fName = entryPoint[i].gsx$firstname.$t;
        var lName = entryPoint[i].gsx$lastname.$t;
        var email = entryPoint[i].gsx$email.$t;
        var total = entryPoint[i].gsx$totalordered.$t;

        found = false;

        // Check the array for the name
        for(var i=0; i < newArr.length; i++)
        {
            if(newArr[i] == fName)
            {
                found = true;
                break;
            }
        }

        // If name not found, add it
        if(!found) newArr.push(fName)
    }
}
});

3
投票

如果找不到,newArr.indexOf(value)将返回-1


0
投票

如果newArr需要包含唯一值,它应该是Set,而不是数组。您可以通过将构造函数传递给数组将名称放入Set

var newSet = new Set(entryPoint.map(entry => entry.gsx$firstname.$t));

将跳过已添加到集合中的任何名称。然后,您可以使用Iterator获取newSet.values()以使用存储的名称,或者,如果您更舒服,可以使用它来创建基于集合的数组:

var newArr = [...newSet.values()];
// or var newArr = Array.from(newSet.values()); if you can't use destructuring

尽管如此,Set在Internet Explorer中不可用。但你可以用polyfill.io等填充它。

© www.soinside.com 2019 - 2024. All rights reserved.