在JavaScript中的对象列表的末尾添加元素

时间:2017-03-10 14:23:43

标签: javascript list

我有一个像这样的列表作为输入:

{value: 1, rest: {value: 2, rest: null}}

我想在列表中添加一个元素并将其放置以便输出:

{value: 1, rest: {value: 2, rest: {value 3, rest:null}}}

我设法使用以下函数在开头添加元素,但是如何在结尾处添加元素呢?感谢。

function prepend(elem, list){

  list = {value:elem, rest:list};
  return list;
}
console.log(prepend(3, {value: 1, rest: {value: 2, rest: null}}));

输出为:{value: 3, rest: {value: 1, rest: {value 2, rest:null}}}

10 个答案:

答案 0 :(得分:1)

你可以在这里使用for循环,当我是最后一个对象或休息时null添加新对象和中断循环。



var obj = {value: 1, rest: {value: 2, rest: null}}

function add(elem, list) {
  for (var i = obj; i; i = i.rest) {
    if (i.rest == null) {
      i.rest = { value: elem,rest: null}
      break;
    }
  }
}

add(3, obj)
console.log(obj)




答案 1 :(得分:0)

function append(list, item){
    if(list.rest == null)
    list.rest = item;
   else
    append(list.rest, item)
}

答案 2 :(得分:0)

你可以做的是使用一个对象数组并在数组中使用append()

答案 3 :(得分:0)

您可以遍历rest个对象,然后将新对象分配到最后一个。

function prepend(elem, list) {
    var object = list;
    while (object.rest) {
        object = object.rest;
    }
    object.rest  = { value: elem, rest: null };
    return list;
}

console.log(prepend(3, { value: 1, rest: { value: 2, rest: null } }));

答案 4 :(得分:0)

尝试使用this之类的内容:

var obj = {value: 1, rest: {value: 2, rest: null}};

function addRest(val) {
   var current = obj;
   while(current.rest) {
      current = current.rest;
   }
   current.rest = { value: val, rest: null };
}

addRest(3);
console.log(JSON.stringify(obj));
//{"value":1,"rest":{"value":2,"rest":{"value":3,"rest":null}}}

答案 5 :(得分:0)

以下代码打印您想要的输出:

'use strict';

var obj = {
    value: 1,
    rest: {
        value: 2,
        rest: null
    }
};

function append(elem, obj) {
    var iteratedObj = obj;
    while (iteratedObj.rest !== null) {
        iteratedObj = iteratedObj.rest;
    }

    iteratedObj.rest = elem;
}

var toBeAppended = {
    value: 3,
    rest: null
};

append(toBeAppended, obj);

console.log(obj);

答案 6 :(得分:0)

以下内容适用于您所描述的特定情况

function prepend(elem, list){

  for (var el in list) {
   el === 'rest' && list[el] === null ? list[el] = {value: elem, rest:null};
  }

  return list;
}

答案 7 :(得分:0)

试试这个。 我做了一个递归函数

{{1}}

此功能可用于所有情况。

答案 8 :(得分:0)

试试这个:

function append(subHierarchy,hierarchy){
  var node=hierarchy;
  while(node.rest){
    node=node.rest
  }
  node.rest=subHierarchy;
  return hierarchy;
}

var result = append({value:4},{value:1,rest:{value:2,rest:{value:3}}});

console.log(result);

答案 9 :(得分:-1)

简单如下。

var elem = { ..... };
var obj = { ......... };
var rest = obj;

while(rest){
   rest = rest.rest;
}
rest = elem;