Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-通过键/值对向对象添加对象和删除对象_Javascript_Jquery_Ajax_Javascript Objects - Fatal编程技术网

JavaScript-通过键/值对向对象添加对象和删除对象

JavaScript-通过键/值对向对象添加对象和删除对象,javascript,jquery,ajax,javascript-objects,Javascript,Jquery,Ajax,Javascript Objects,我正在尝试完成一个JS脚本,目标是从对象中添加和删除名字和姓氏。它将通过AJAX传输到一个PHP脚本,然后该脚本将操作JSON,所以请记住。。。我应该用什么来制作一个对象: 有两对名字和姓氏 可以通过声明一个键(即“first”)和一个值来删除其名字和姓氏对 我知道这很简单,但我读过的所有解决方案都没有奏效!抱歉问了这么愚蠢的问题 编辑:我无法识别每个全名-我只需要知道名字和姓氏。事实上,我有一个对象,里面有一堆对象,在Chrome的JS控制台中看起来像这样: [Object, Object,

我正在尝试完成一个JS脚本,目标是从对象中添加和删除名字和姓氏。它将通过AJAX传输到一个PHP脚本,然后该脚本将操作JSON,所以请记住。。。我应该用什么来制作一个对象:

  • 有两对名字和姓氏
  • 可以通过声明一个键(即“first”)和一个值来删除其名字和姓氏对
  • 我知道这很简单,但我读过的所有解决方案都没有奏效!抱歉问了这么愚蠢的问题

    编辑:我无法识别每个全名-我只需要知道名字和姓氏。事实上,我有一个对象,里面有一堆对象,在Chrome的JS控制台中看起来像这样:

    [Object, Object, Object, Object]
    0: Object
        first: "Stewie"
        last: "Griffin"
    1: Object
        first: "Peter"
        last: "Griffin"
    2: Object
        first: "Stan"
        last: "Smith"
    3: Object
    
    实现这一点的代码是:

    window.selectednames.push({
    first: $(this).find('.firstname').text(), 
    last: $(this).find('.lastname').text()
    });
    
    或出于测试目的,以下是数据:

    window.selectednames.push({
        first: 'Stweie', 
        last: 'Griffin'
        });
    window.selectednames.push({
        first: 'Peter', 
        last: 'Griffin'
        });
    window.selectednames.push({
        first: 'Stan', 
        last: 'Smith'
        });
    

    这似乎很理想!当我只知道名字和姓氏时(换句话说,当我不知道数字/计数/索引时),我不知道如何从这个对象集合中删除

    使用javascript对象:

    例如,您可以有一个名称数组,如下所示

    var names = new Array()
    var name1 = new Object();
    name1.first = "Brad";
    name1.last = "Pitt";
    names.push(name1);
    
    当需要将数组转换为json时,只需使用

    var jsonStr = JSON.stringify(a);
    
    为了响应您的后期编辑,您可以始终使用以下功能

    function removeNameFromList(nameList, firstName, lastName) {
        for(var i = nameList.length - 1; i >= 0; i--) {
             if(nameList[i].first == firstName && nameList[i].last == lastName) {
                  nameList.splice(i, 1);
             }
        }
    }
    

    请注意,此函数将删除所有出现的名字和姓氏组合。

    所有好东西都不相关。。我想我可以试着建立更多的背景…^。可能已经读过了:请看我上面的编辑……你是说
    JSON.stringify
    。我确实读过。感谢FelixPlease查看我在上面的编辑…谢谢,它太近了,但是我现在得到了一个错误:
    无法读取
    for
    行中未定义的
    的属性“first”。它可以通过其中一个对象——当我运行
    console.log(nameList[I])时
    for
    if
    之间,它输出一个对象,如果它是匹配的对象,并且恰好是第一个运行,它甚至会被删除,但是第二个要运行的对象每次都会失败,并出现此错误…如果我在名称列表[I]中添加
    if(“first”){
    for
    行的
    之后立即添加相应的
    }
    ,我得到
    未捕获的TypeError:无法使用'in'运算符在未定义的
    中搜索'first',好像没有
    列表[I]
    !这并不是整个对象都在被销毁-我仍然可以对其进行控制台记录,而且它看起来像是事先做的。