JavaScript-da ob'ektlar ro'yxatining oxirida elementni qo'shing

Menga bu kabi yozuvlar kiradi:

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

Men ushbu elementni ro'yxatga qo'shib uni joylashtirishni xohlayman:

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

Menga quyidagi funktsiyani ishlatib, elementni qo'shishga muvaffaq bo'ldim, lekin oxirigacha elementni qo'shish uchun uni qanday qilishim kerak? Rahmat.

function prepend(elem, list){

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

The output is: {value: 3, rest: {value: 1, rest: {value 2, rest:null}}}

0
Bu ob'ekt, JS ro'yxatlari yo'q.
qo'shib qo'ydi muallif meskobalazs, manba
Ob'ekt strukturasiga ega bo'lish kerakmi? Biror narsalar majmuasi qilayotgan ishlaringiz uchun yaxshiroq bo'lishi mumkin.
qo'shib qo'ydi muallif Brian, manba
Men Star_Manning javobini tavsiya qildim. kod oddiy va ajoyib. Bu o'z-o'zidan ishlatilishi mumkin.
qo'shib qo'ydi muallif Super_Dragon, manba

10 javoblar

Bu erda for pastadir foydalanishingiz mumkin va i oxirgi ob'ekt yoki dam null esa, yangi ob'ekt va break loop qo'shsangiz.

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

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)
</div> </div>
1
qo'shib qo'ydi

Quyidagi kabi oddiy.

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

while(rest){
   rest = rest.rest;
}
rest = elem;
1
qo'shib qo'ydi
Bu ishlamaydi. Siz birinchi va oxirgi qatorlardan tashqari hammasini olib tashlashingiz mumkin.
qo'shib qo'ydi muallif Quentin, manba

Quyidagi kod sizga kerakli chiqishni yozadi:

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

'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);
</div> </div>
0
qo'shib qo'ydi

rest moslamalari orqali yineleyebilir va keyin yangi ob'ektni oxirigacha belgilashingiz mumkin.

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

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 } }));
</div> </div>
0
qo'shib qo'ydi

Buni ko'ring. rekursiv funktsiya ni yaratdim.

function prepend(elem, list){
   if (list.rest == null)
      list.rest = {value:elem, rest:null};
   else
     prepend(elem, list.rest);
   return list;
}

Bu funktsiya barcha holatlarda ishlatilishi mumkin.

0
qo'shib qo'ydi
Sizning kodingiz ajoyib va ​​oddiy ...
qo'shib qo'ydi muallif Super_Dragon, manba

bu , shuning uchun quyidagi narsalarni ko'ring:

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}}}
0
qo'shib qo'ydi
Yangilangan javobni ko'ring.
qo'shib qo'ydi muallif Arg0n, manba
chunki dastlabki muammoni narsalar bilan bog'liq, men bu erda juda oddiy ko'rinishga olib kelganman
qo'shib qo'ydi muallif user3677169, manba

Buni ko'ring:

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

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);
</div> </div>
0
qo'shib qo'ydi
function append(list, item){
    if(list.rest == null)
    list.rest = item;
   else
    append(list.rest, item)
}
0
qo'shib qo'ydi

Bu erda siz tasvirlab bergan alohida holatda ishlash kerak bo'lgan narsa

function prepend(elem, list){

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

  return list;
}
0
qo'shib qo'ydi

Nimani qilsangiz, ob'ektlar majmuasini ishlatish va qatorda append() dan foydalaning

0
qo'shib qo'ydi
Javascript UZB
Javascript UZB
99 ishtirokchilar

@js_uzb @vuejs_uz @react_uz @nodejs_uz @angular_uz @ngTashkent @yiiframework_uz @laravel_uz @linux_uzbek @python_uz @swift_uzb —————— @uzdevgroup @UzGeeksGroup ——— @UzDev_Jobs @jobs_uzb