জাভাস্ক্রিপ্ট অবজেক্ট পুশ () ফাংশন


104

আমার একটি জাভাস্ক্রিপ্ট অবজেক্ট রয়েছে (আমি আসলে একটি এজ্যাক্স অনুরোধের মাধ্যমে ডেটা পাই):

var data = {};

আমি এতে কিছু জিনিস যুক্ত করেছি:

data[0] = { "ID": "1"; "Status": "Valid" }
data[1] = { "ID": "2"; "Status": "Invalid" }

এখন আমি সমস্ত অবজেক্টকে একটি অবৈধ স্থিতি দিয়ে মুছে ফেলতে চাই (তবে সবকিছুকে ক্রম অনুযায়ী রাখুন):

var tempData = {};
for ( var index in data ) {
    if ( data[index].Status == "Valid" ) {
        tempData.push( data );
    }
}
data = tempData;

আমার মনে এই সমস্ত কাজ করা উচিত, তবে আমি একটি ত্রুটি পেয়ে যা tempData.pushএটি কোনও ফাংশন নয়। আমি বুঝতে পারি কেন এটি অ্যারের মতো নয়, তবে আমি অন্যথায় কী করতে পারি?


4
দেখে মনে হচ্ছে আপনার কেবল একটি অ্যারে ব্যবহার করা উচিত
ইসাইলিজা

উত্তর:


134

push()অ্যারেগুলির জন্য , বস্তুর জন্য নয় , তাই সঠিক ডেটা স্ট্রাকচারটি ব্যবহার করুন।

var data = [];
// ...
data[0] = { "ID": "1", "Status": "Valid" };
data[1] = { "ID": "2", "Status": "Invalid" };
// ...
var tempData = [];
for ( var index=0; index<data.length; index++ ) {
    if ( data[index].Status == "Valid" ) {
        tempData.push( data );
    }
}
data = tempData;

9
+1 আমাকে এতে মারধর করে। for...inলুপটিও পরিবর্তন করতে ভুলবেন না।
অ্যান্ডি ই

@ ম্যাটবাল আমার খারাপ! আমি সত্যিই তাই পর্যালোচনা এবং স্টাফ এ পারদর্শী না! :)
শৌভিক

4
ধাক্কা অ্যারের জন্য, কোনও বস্তুর সাথে অ্যারে যুক্ত করার কোনও উপায় আছে কি?
ভেঙ্কট

4
সাহসী অ্যারে সম্পর্কে কি?
কিন্ডার হকেনহুল

@ কিনার্ডহকেনহুল আমি দুঃখিত, আমি প্রশ্নটি বুঝতে পারি না। আপনি যা জিজ্ঞাসা করছেন তা কি আপনি পরিষ্কার করতে পারেন?
ম্যাট বল

18

অবজেক্টগুলি পুশ সম্পত্তি সমর্থন করে না, তবে আপনি সূচিটি কী হিসাবে ব্যবহার করে সংরক্ষণ করতে পারেন,

var tempData = {};
for ( var index in data ) {
  if ( data[index].Status == "Valid" ) { 
    tempData[index] = data; 
  } 
 }
data = tempData;

আমি মনে করি কাজটি করে অবজেক্টের স্থিতি অবৈধ হলে অপসারণ করা এটি আরও সহজ।

for(var index in data){
  if(data[index].Status == "Invalid"){ 
    delete data[index]; 
  } 
}

এবং অবশেষে আপনার কোনও ভার্চ টেম্প তৈরি করার দরকার নেই -


এই উত্তরটি কীভাবে বর্তমান সমস্যা সমাধানে
ওপিকে

5

আপনার অবশ্যই তৈরি করা উচিত var tempData = new Array();

পুশ একটি অ্যারে ফাংশন।


9
কেন new Array()এবং না []?
ম্যাট বল

4
[] নতুন অ্যারে তৈরির জন্য একটি বিকল্প (শর্টকাট)। এটি [] এবং নতুন অ্যারে () দিয়ে তৈরি করা যেতে পারে।
অ্যালেক্স ডিএন

6
[]অ্যারে তৈরির প্রাথমিক উপায় হ'ল অন্যটি বিকল্প এবং এমনকি ওভাররাইটও করা যেতে পারে।
ইসাইলিজা

6
দেখুন stackoverflow.com/questions/885156/... কেন আলোচনার জন্য new Array()মন্দ
জোনাস Høgh

w3schools.com/js/js_obj_array.asp নতুন অ্যারে নিয়মিত অ্যারে। [] প্রাথমিক হিসাবে সংজ্ঞায়িত কোথায়?
অ্যালেক্স ডিএন

3

জাভাস্ক্রিপ্ট প্রোগ্রামিং ল্যাঙ্গুয়েজ ক্রিয়ামূলক প্রোগ্রামিং দৃষ্টান্তকে সমর্থন করে যাতে আপনি এই কোডগুলির সাহায্যে সহজেই করতে পারেন।

var data = [
    {"Id": "1", "Status": "Valid"},
    {"Id": "2", "Status": "Invalid"}
];
var isValid = function(data){
    return data.Status === "Valid";
};
var valids = data.filter(isValid);

2

আমি ধরে নিলাম যে সত্যই আপনি সার্ভার থেকে বস্তু পেয়েছেন এবং আউটপুটটিতে অবজেক্ট পেতে চান

Object.keys(data).map(k=> data[k].Status=='Invalid' && delete data[k])


0
    tempData.push( data[index] );

আমি উপরের সঠিক উত্তরের সাথে একমত, কিন্তু .... আপনি এখনও টেম্পাডেটাতে যে ডেটা যুক্ত করতে চান তার জন্য সূচকের মান দিচ্ছেন না। [সূচক] মান ব্যতীত পুরো অ্যারে যুক্ত করা হবে।


সমস্যাটি কীভাবে সমাধান করবেন তা দয়া করে বর্ণনা করুন। ধন্যবাদ
লিওনিড গ্লানজ

এটি ম্যাট বল থেকে গৃহীত উত্তর সংশোধন করা হবে। যেহেতু আমরা ডেটার মধ্য দিয়ে লুপিং করছি, আমাদের কেবল ডেটা [সূচীকরণ] টিপানো উচিত, সম্পূর্ণ ডেটা নয়।
জোনাথন বার্গারন

-2

কর:


var data = new Array();
var tempData = new Array();


5
কেন new Array()এবং না []?
ম্যাট বল

নতুন অ্যারের মধ্যে পার্থক্য নোট করুন (); এবং নতুন অ্যারে; বিকল্পগুলির কথা বলার পরিবর্তে আপনার এই জাতীয় প্রশ্নের উত্তর দিতে সক্ষম হওয়া উচিত ..
জোনাথন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.