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

时间:2017-12-17 01:03:11

标签: javascript jquery arrays ajax

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

{{1}}

3 个答案:

答案 0 :(得分:3)

如果找不到,

newArr.indexOf(value)将返回-1

答案 1 :(得分: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)
    }
}
});

答案 2 :(得分: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来填充它。